Организация хранения промежуточных данных
Разработка - Математика и алгоритмы
Не могу сказать, как часто вопросы такого рода возникают перед разработчиками, но мне он встретилась и вот как я на него ответил.
Была поставлена задача реализовать обработку для сверки данных, которые присылал внешний контрагент, с данными, которые хранятся во внутренней учетной системе. Информация от контрагента поступала в виде таблицы в формате Excel. При этом часть активов однозначно идентифицировалась по уникальному коду, а для других могли быть разночтения. По этой причине процедура сверки состояла из нескольких этапов. На первом происходило чтение исходного файла и заполнялась таблица соответствия активов, на втором этапе пользователь выставлял соответствие между внешними и внутренними активами, для которых оно не было найдено и на заключительном этапе происходило построение отчета. Приступив к работе, я обнаружил, что мне надо организовать промежуточное хранение данных из внешнего файла, которые я читаю на первом шаге. То есть, на первом шаге я получаю некую таблицу значений, которую затем использую для построения итогового отчета. Вот эту таблицу мне и надо было хранить. Для этой цели я создал реквизит формы ДанныеСпецДепа c типом ТаблицаЗначений. Состав колонок данного реквизита изначально неизвестен, мы можем его получить только после того, как прочитаем внешний файл.
Теперь немного кода. У формы есть команда Load (загрузить). Она выполняет следующие действия.
&НаКлиенте
Процедура Load(Команда)
mFile=new File(Объект.глФайлОбмена);
ОписаниеОповещения = Новый ОписаниеОповещения("ПередатьФайлНаСерверЗавершение", ЭтаФорма,mFile.Расширение);
НачатьПомещениеФайла(ОписаниеОповещения,,Объект.глФайлОбмена,Ложь,УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПередатьФайлНаСерверЗавершение(Знач Успешно, Адрес, Знач ВыбранноеИмяФайла, Знач ДополнительныеПараметры) экспорт
LoadНаСервере(Адрес,ДополнительныеПараметры);
КонецПроцедуры
Файл помещается во временной хранилище на сервере, затем вызывается обработчик оповещения. Теперь приведем код процедуры LoadНаСервере.
&НаСервере
Процедура LoadНаСервере(Адрес,Расширение)
//....................................
//Шаг 1.
//....................................
lib=РеквизитФормыВЗначение("Объект") ;
DepoList=РеквизитФормыВЗначение("СписокДепозитов");
vt=lib.Main(Адрес,Расширение,DepoList) ;
//....................................
//Шаг 2.
//....................................
//редактируем колонки у реквизита ДанныеСпецдепа
приемник=РеквизитФормыВЗначение("ДанныеСпецДепа");
мУдалить=новый массив;
для каждого кол из приемник.Колонки цикл
если vt.Колонки.Найти(кол.Имя)=неопределено тогда
мУдалить.Добавить("ДанныеСпецДепа."+кол.Имя);
конецесли;
конеццикла;
мДобавить=новый массив;
для каждого кол из vt.Колонки цикл
если приемник.Колонки.Найти(кол.Имя)=неопределено тогда
НоваяКолонка = Новый РеквизитФормы(Кол.Имя,Кол.ТипЗначения, "ДанныеСпецДепа");
мДобавить.Добавить(НоваяКолонка);
конецесли;
конеццикла;
ИзменитьРеквизиты(мДобавить,мУдалить);
//....................................
//Шаг 3.
//....................................
ЗначениеВРеквизитФормы(vt,"ДанныеСпецДепа");
ЗначениеВРеквизитФормы(DepoList,"СписокДепозитов");
ЗначениеВРеквизитФормы(lib,"Объект")
КонецПроцедуры
Пояснение к приведенному фрагменту кода. На первом шаге вызывается процедура из модуля объекта, в которой происходит чтение исходного файла и формирование таблицы значений с данными. На втором шаге состав колонок реквизита формы ДанныеСпецДепа делается аналогичным составу колонок таблицы vt. На заключительном шаге мы копируем таблицу vt в реквизит формы ДанныеСпецДепа. Теперь эти данные можно использовать при построении итогового отчета. Задача промежуточного хранения решена. Разумеется, изложенное решение не является единственным. Поэтому статья и размещена в категории "Теория программирования".
Специальные предложения
См. также
[После]Новогодние задачи 5
30.12.2019 1149 Alxby 23
Подборка решений для взаимодействия со ФГИС «Меркурий» Промо
С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.
Регистры бухгалтерии. Общая информация 116
05.09.2019 10344 YPermitin 22
"Хочу универсально!" [Часть 1] 67
02.09.2019 6424 SeiOkami 35
INFOSTART MEETUP Krasnodar. 14 февраля 2020 г. Промо
Краснодар станет первым в 2020 году местом, где пройдет региональная встреча IT-специалистов сообщества Инфостарт. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Стоимость участия - 5000 рублей. Цена действительна до 26.12.2019.
Иерархия без "В ИЕРАРХИИ" 123
22.08.2019 6164 ildarovich 18
EnterpriseData – часть 3. Загрузка данных, идентификация объектов 65
22.08.2019 6292 ids79 7
Программы для исполнения 54-ФЗ Промо
С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.
Обработчики событий при записи объектов. Зачем и что за чем? 247
25.07.2019 18979 4 AlbinaAAA 24
Как проводятся документы в типовых конфигурациях от 1С 167
24.07.2019 19283 skv_79 35
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются... 8
24.07.2019 3508 vandalsvq 16
Управление качеством кода 144
22.07.2019 10493 Stepa86 33
Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.130.х! Промо
Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.
24700 руб.
Что делает "В ИЕРАРХИИ" в запросе? 102
16.07.2019 11267 YPermitin 34
Создание отчетов с помощью СКД - основные понятия и элементы 225
25.06.2019 27700 ids79 17
Подборка программ для взаимодействия с ЕГАИС Промо
ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.
Реализуем Стек, Очередь и Приоритетную очередь в 1С 52
24.06.2019 8813 RonX01 63
Вычисление 200 тысяч знаков числа pi 74
28.05.2019 4733 Oleg_nsk 96
Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо
Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.
7500 рублей
Регистры накопления. Виртуальные таблицы. Часть №1: Обороты 88
20.05.2019 14469 YPermitin 5
Даем названия переменным: как префиксы экономят наше время 10
06.05.2019 3986 Designer1C 69
Открыто голосование за доклады на INFOSTART MEETUP Krasnodar Промо
Выбирайте и голосуйте за самые интересные доклады, лучшие из них попадут в окончательную программу митапа. Голосование продлится до 30 января 2020 года.
Заметки по SQL: Срез последних - аналог запроса 17
15.01.2019 7234 IVC_goal 5
Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария 236
09.01.2019 32047 Vladimir Litvinenko 69
Готовые переносы данных из различных конфигураций 1C Промо
Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.
Многопоточное восстановление последовательностей 42
05.12.2018 8337 _ASZ_ 29
Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 132
10.11.2018 25019 ids79 40
Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.11.х Промо
Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.
29700 руб.
Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C 150
23.08.2018 26140 Rain88 44
Теорема номер тринадцать 15
15.03.2018 10100 vasilev2015 24
Онлайн-курс «Практические аспекты внедрения регламентированного учета и расчета себестоимости в 1С:ERP на крупных промышленных предприятиях» с 17 февраля по 13 марта 2020 года. Промо
Курс рассчитан для подготовки экспертов по регламентированному учету и учету затрат для внедрения на крупных промышленных предприятиях с «исторически сложившимся» учетом
9000 рублей
Введение в CI для 1С 87
21.11.2017 20366 real_MaxA 22
Как работает серверный вызов в 1С 463
18.11.2017 46841 pahich 77
Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.12.х и УТ 11.4.11.х! Промо
Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!
29700 руб.
#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода 44
12.10.2017 15554 for_sale 58
Групповая разработка конфигураций в крупном холдинге 69
15.08.2017 18480 stas_ganiev 15