Имя: Пароль:
1C
1С v8
КД предварительная проверка перед загрузкой
0 Дарт Вейдер
 
01.08.16
09:02
Прошу помочь в решении задачи. Имеется обмен УТ 10.3 - Бух 3.0 на сомописных правилах обмена. Задано условие - новые организации не создавать. Вопрос: Необходимо добавить проверку перед загрузкой данныз - если в выгрузке есть организации, которые не найдены в базе-приемнике (Бух 3.0), то не грузить весь(!) файл.  Как сделать?
Как я это делаю - при выгрузке организаций заношу их в параметр-таблицу.
В глобальном ПослеЗагрузкиДанных у меня есть таблица со списком организаций. До этого момента все ОК.
Но мне ее нужно передать в ПередЗагрузкойДанных. Или в ПослеЗагрузкиПараметров.
Но программа там ее в упор не видит.
Кто делал подобное? Как реализовывали?
1 MaxS
 
01.08.16
09:05
А база источник не в курсе куда будут загружаться данные?
Сразу выгружать то, что нужно и не придётся загружать то, что не нужно.
2 Дарт Вейдер
 
01.08.16
09:07
(1) этот вариант оставил на крайний случай))
да и там надо думать как передать в параметры список баз (если выгржают сразу несколько организаций)
3 Йохохо
 
01.08.16
09:11
(0) "при выгрузке организаций заношу их в параметр-таблицу" в справочник ПараметрыКонвертации с галкой "Передавать параметр при выгрузке"?
4 polosov
 
01.08.16
09:12
(0) Ну засунь ТЗ в глобальный параметр и анализируй до посинения.
5 Дарт Вейдер
 
01.08.16
09:12
вообще больше всего раздражает тот момент, что список организаций я получил, осталось самая малость) но передать его в упор не получается

пробовал в "После выгрузки данных" передавать параметр, так
ПередатьОдинПараметрВПриемник("ТаблицаОрганизаций", ЗначениеВСтрокуВнутр(Параметры.ТаблицаОрганизаций));

но в "После загрузки параметров" в Параметры.ТаблицаОрганизаций пусто
6 Дарт Вейдер
 
01.08.16
09:14
(3) так тоже пробовал, но в "После загрузки параметров" в Параметры.ТаблицаОрганизаций пусто

я так понимаю он берет значение из формы Универсально обработки обмена - а там ничего не заполняется
7 Дарт Вейдер
 
01.08.16
09:18
(4) это в настройках конвертации, на закладке параметры?
8 assasu
 
01.08.16
09:19
(6)  правило конвертации указано ?
9 Дарт Вейдер
 
01.08.16
09:22
тогда еще такой вопрос:

если я пишу в файл обмена напрямую, а потом читаю так

Пока ФайлОбмена.Прочитать() Цикл
ИмяУзла = ФайлОбмена.ЛокальноеИмя;
ТипУзла = ФайлОбмена.ТипУзла;
Если ИмяУзла = "ИнформацияОбОрганизации" И (ТипУзла = одТипУзлаXML_НачалоЭлемента) Тогда
  Наименование = одАтрибут(ФайлОбмена1, одТипСтрока, "Наименование");
  ИНН = одАтрибут(ФайлОбмена1, одТипСтрока, "ИНН");  
ИначеЕсли (ИмяУзла = "ИнформацияОВыгружаемыхОрганизациях") И (ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда
  Прервать;
КонецЕсли;
КонецЦикла;  

то я даже получаю нужный список организаций перед загрузкой и могу его проверить

но при таком способе загрузка дальше не идет (Загружено 0)

видимо потому что данные пишутся в конец файла и после данного кода чтение позиционируется в конец

Есть ли какой нибудь способ прочитать данные из файла из произвольного места, но без изменения позиции ФайлОбмена ?
10 Дарт Вейдер
 
01.08.16
09:22
(8) нет, но там по сути строка
11 Дарт Вейдер
 
01.08.16
09:24
+(10)  т.е. я пытаюсь передать строку так ЗначениеВСтрокуВнутр(Параметры.ТаблицаОрганизаций)
12 assasu
 
01.08.16
09:28
(9) так ты раскурочил уже типовые правила?)
13 Дарт Вейдер
 
01.08.16
09:33
(12) да по всякому уже пробовал))

и через параметр и напрямую в файл записывать

просто проблма в том, что перед выгрузкой - я не знаю какеи организации попадут в файл

а в после выгрузки - файл обмена уже сфомирован, и если чтото писать туда самому, то записывается в конец файла. И видимо поэтому достать их оттуда можно только после загрузки.

Или я неправ? в КД честно говоря не силен.((
14 assasu
 
01.08.16
09:36
(13)  "а в после выгрузки - файл обмена уже сфомирован, и если чтото писать туда самому, то записывается в конец файла" - есть возможность написать что то самому. и куда это запишется зависит от того когда пишешь. в самое начало тоже можно записать .