Загрузка и обработка большого файла EXCEL в 1С с прогрессбаром

Задача: «фоново» загрузить файл эксель большого размера, с показом прогресса загрузки.

Решение:

В ходе выполнения задачи столкнулся с глюком платформы 1С, что при запуске фонового задания с параметром адреса временного хранилища файла, он приходит на сервер пустым. Потому пришлось делать «финт ушами», а именно перед запуском фонового задания, файл загрузить на сервер, получить его временное имя и уже затем передать его как параметр при запуске фонового задания.

Кроме того выплыла проблема с не рабочим способом передачи данных о загрузке при помощи хранения данных во «ВременныхХранилиах», описанным тут. Потому для получения прогресса воспользуемся возможностью зная идентификатор фонового процесса периодически получить с сервера данные выводимые при помощи «Сообщить()».

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

Клиентская часть в управляемых формах:

1С: Не выполняются регламентные задания

У платформы 1С в регламентных заданиях есть одна фишечка, на которую уже не первый раз попадаюсь. А именно, при создании регламентного задания в конфигураторе, его расписание в приложение «улетает» только один раз. А далее, это расписание хоть завыставляйся  в конфигураторе — выполняться оно будет по расписанию выставленному в приложении.

Следовательно алгоритм следующий: создали регламентное задание , задали расписание. Если нужно изменить расписание — идем в приложение и выставляем его там, в «Обработка.РегламентныеИФоновыеЗадания»




1С: Пять способов вывода сообщений с «сервера»

Конфигурации, платформы и БСП разные бывают, потому где-то сработает одно, где-то другое.

1) Универсальный способ: 

2)  Через СообщениеПользователю:

3) Старые БСП (ниже 3-й версии):

4) Свежие БСП (выше 3 версии)

5) Через «ВызватьИсключение»

Может быть полезно например при отказе в проведении документа в процедуре ОбработкаПроведения:




Как постранично (порционно) листать результат запроса в 1С (ака LIMIT x,y в MySQL)

Большая беда MSSQL и как следствие 1С — отсутствие возможности порционно листать записи результата запроса как в MySQL. В результате рождаются такие монстроузные алгоритмы как ниже (код не мой):

Если вкратце, то алгоритм следующий:

  1.  Делаем выборку ВСЕХ записей, определяя, с какой записи было начало предыдущей страницы
  2. Начиная с этой записи, делаем выборку N записей
  3. Передаем результат

Интересно будет посмотреть как этот алгоритм будет вести себя при миллионах записей..

 




1С:Добавление своего представления в поле выбора

Задача:  в отображении контрагента в поле выбора добавить помимо наименования, еще и его ИНН

Решение: переопределим процедуру ОбработкаПолученияПредставления в модуле менеджера справочника контрагента:

Получится:

 




1 9 10 11 12 13 40