fixin (fixin) wrote,
fixin
fixin

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

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

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

Tags: , опыт excel
Subscribe
promo fixin декабрь 31, 2037 16:57 1415
Buy for 30 tokens
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок - список. Мой проект "…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 20 comments