Имя: Пароль:
1C
 
Выгрузка - загрузка УПП - ЗУП
0 Масянька
 
28.05.24
16:30
День добрый!
Кратко:
1. в УПП формируется документ.
2. самописная выгрузка этого док-та в ЗУП.
3. в ЗУП рассчитывается НДФЛ (в загруженного документе).
4. надо НДФЛ загрузить обратно в УПП.
Цикл в цикле (перебор ТЧ)? Или есть более элегантный способ?
Выгружать из ЗУП в УПП не вариант (разные колонки и (соответсно) данные).
Спасибо.
1 Asmody
 
28.05.24
16:34
ну, можно из ЗУПа на листочке распечатать и с него ручками ввести. вариант?
2 Homer
 
28.05.24
16:34
грузить данные в док Корректировка учета НДФЛ.
3 Масянька
 
28.05.24
16:35
(1) Я только "ЗА"! Но бухи против...
А противовес у них...
4 вшыуд
 
28.05.24
16:44
//*******
2. самописная выгрузка этого док-та в ЗУП.

Выгружать из ЗУП в УПП не вариант (разные колонки и (соответсно) данные).
//*******

Как стыкуется один с другим?
5 Масянька
 
28.05.24
16:45
(4) Физлицо (код) - ТЧ.
Сам док-т - номер и дата.
6 вшыуд
 
28.05.24
16:51
Без структуры данных трудно понять.

Конвертация 2 и регламентированные фоновые задания по расписанию. Пусть сами все делают.
7 вшыуд
 
28.05.24
16:55
> Выгружать из ЗУП в УПП не вариант (разные колонки и (соответсно) данные).

В ЗУПе есть документ "Данные для расчета зарплаты". Закидываете туда данные и работайте с ними.
8 Мультук
 
28.05.24
17:08
(0)

1) Чисто ради интереса, почему из УПП в ЗУП через COM-можно,
а обратно уже нет ?

2) Путь "тру-джедая"
Ведь нужно срочно/важно/быстро/дешево (и вполне возможно только один раз)

Если физ.лица можно гарантированно искать по коду, то

Пишем в ЗУП обработку, выбираем нужный документ, жмем Кнопку "Выгрузить"

Формат выгрузки: можно во что угодно, хоть в CSV, JSON, XML
То что умеете и то сможет скушать УПП

Транспорт: пусть будет файл в общей сетевой папке

Загрузка: Пишем еще одну обработка в УПП, обработка кушает выгруженный файл и обновляет указанный документ
или создает новый или еще что-то.


Бухи радостно жмут кнопки, наблюдают мгновенный результат.
От радости начинают подбрасывать в воздух чепчики и иные предметы гардероба и ...
Но. Увы, Масяня девочка -- всё это подбрасывание бесполезно.
9 Масянька
 
28.05.24
17:19
Да, всё есть (и туда, и обратно).
Меня интересует: обратно, заполнение одной колонки - как находить нужного физика и менять сумму?
Цикл в цикле - ежу понятно. А более красиво?
10 Масянька
 
28.05.24
17:20
(8) Увы, батенька, Вы не Ванга...
11 Мультук
 
28.05.24
17:30
(9)

Например:

ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ФизЛицо", ФизЛицо);

НайденныеСтроки = Табчасть.НайтиСтроки(ПараметрыОтбора);

Если НайденныеСтроки.Количество() = 1 Тогда
    //НайденныеСтроки[0].Сумма = Сумма;
ИначеЕсли НайденныеСтроки.Количество() = 0 Тогда
    //Не нашли. Что делать ???
Иначе
    //Нашли. Но он несколько раз. Что делать ???
КонецЕсли;



P.S.
Но вообще это синтаксический сахар и всё равно будет цикл в цикле,
но зато удобно
12 SleepyHead
 
29.05.24
05:07
(11) Главное, создание структуры вынести за пределы цикла.
А то у меня в подобной задаче 1с сожрала всю память менее, чем за 5 минут - а надо было сопоставить всего лишь около 10 000 физлиц.

Очень большой расход памяти идёт как при создании новой структуры, так и в методе НайтиСтроки, который каждый раз создает массив со ссылками на строки таблицы значений

В итоге я пошел другим путем -

1. Таблицу значений сортирую по нужной колонке - например, по СНИЛС, когда сопоставляю физлиц
2. нахожу первую строку с таким СНИЛС методом Найти() и определяю индекс этой строки
3. с этого индекса и дальше в цикле обрабатываю строки и делаю вывод, какие из них мне подходят
4. как только значение ключевого поля поменялось, цикл прекращается

По времени получается даже быстрее, чем через НайтиСтроки, а памяти ест значительно меньше

Но и работает это только в том случае, если поиск выполняется только по одной колонке таблицы.
13 DimVad
 
29.05.24
06:46
Я бы :

1. В ЗУПе обработкой создавал ТЗ. Колонки - Номер Документа, Дата Документа, Физлицо, НДФЛ.

2. Одной командой выгружал ТЗ в файл xml.

3. В УПП одной командой загружал ТЗ из файла, индексировал по номерам, датам, физлицам.

4. В УПП обхожу документы и их строки - и делаю поиск в индексированном ТЗ. Это будет очень быстро.


Усё.
14 DrZombi
 
29.05.24
06:58
(8) Можно и через сервисы, хоть в ЗУП, хоть в УПП. Но придется все писать и дописывать. :)
15 DrZombi
 
29.05.24
07:09
(9) Используйте хранилища объектов для обменов... Т.е. запоминайте УИД физ.лица...

1. Выгрузка в ЗУП, вы выгружаете и данные и УИД физика, коль у вас на комках, то тама можно тоже уиды получить :)



Функция ПолучитьГУИД_ЭлементаCOM(COM_ФизическоеЛицо,БазаИсточник)
    
    Попытка
        Возврат Строка(БазаИсточник.String(COM_ФизическоеЛицо.УникальныйИдентификатор()));
    Исключение
        Возврат "";
    КонецПопытки;
    
КонецФункции




2. Запоминаете УИД-ы в УПП, в данных для обмена, нужно еще создать псевдо узел, для хранения сей информации...
    При выгрузки обратно в ЗУП, вы уже будете иметь у себя УИД-ы физика, от которого вы выгружались :)
16 SleepyHead
 
29.05.24
07:10
(15) А потом сделали выгрузку-загрузку данных, и ваши уиды стали тыквой
17 Гена
 
29.05.24
07:12
Давно пора менять полностью алгоритм недрожащей рукой. Концепция пинг-понга документов  туда-сюда ошибочна. Всё надо переделать.
В ЗУПе вести нормальные кадры и зарплату, а в УПП выгружать отражения в бухучёте. Не синхронизировать, а именно что выгружать, как это было в ЗУП 2.5

Иначе так и будут вечные нестыковки и косяки при пинг-понге.
18 DrZombi
 
29.05.24
07:13
+(15) (0) Рекомендую перейти на использование вэб-сервисов, т.е. поднять вэб сервер.
          Лицензия не понадобится для сервисов

Там, в вэбе, лучше можно обмен реализовать :)
19 DrZombi
 
29.05.24
07:15
(16) А потом, не использовать псевдо Узел, т.к. он нужно вам только для вашего обмена.
Вы понимаете, что делаете? Нет? Тут как ни крути, тыква получаться будет в любом варианте :)
20 DrZombi
 
29.05.24
07:16
+(16) Вы понимаете, что хранить информацию в своем узле, не означает, что вам разрешено использовать его в штатных обменах от 1С... т.е. ваш узел только для вашего обмена :)
21 SleepyHead
 
29.05.24
07:27
(19) Ну, тут вам виднее, вы же сначала не писали об обмене через веб-сервисы.
22 DrZombi
 
29.05.24
07:38
(21) ТС не настаивал, а я прошел этот путь...
Сейчас импортно-замещение на линукс ("импортный") :)
23 Масянька
 
29.05.24
08:44
(17) Согласна ("изменять алгоритм").
Давно пора иметь возможность использовать одну базу (например, сотрудников) в разных программах (бухгалтерия, ЗУП и пр.).
24 Chai Nic
 
29.05.24
09:04
(23) Хорошая идея, централизованный классификатор справочной информации для разных баз и организаций. Может когда-то к этому и придут. Причем, неплохо было бы, если бы это было прозрачно на уровне платформы, даже не в конфигураторе - просто в настройках информационной базы указать, что такие-то справочники хранить отдельно, в другой базе. Тем более, что справочники как правило не требуют транзакционности.
Закон Брукера: Даже маленькая практика стоит большой теории.