|
Перезапись ТЧ документа при загрузке данных | ☑ | ||
---|---|---|---|---|
0
Валидатор
21.11.13
✎
11:52
|
нужно загружать из дбф файла данные в табличную часть документа, и если документ уже есть, то перезаписывать его ТЧ. Делал так: Создал ТЗ куда грузил все из дбфа, поиск идет по реквизиту номервходящего документа в Поступлении товаров и услуг (1с 8.2 КА). Как сделать, что если документ уже существует, то его ТЧ обнуляется и туда пишутся новые данные? пробовал типа ТЧ.Очистить, но так как данные я гружу циклом, то каждая предыдущая строка затирается следующей, что не совсем верно, как быть?
|
|||
1
Бешеная Нога
21.11.13
✎
11:53
|
сделай запрос к своей тз и выводи по группировке Документ
|
|||
2
Галахад
гуру
21.11.13
✎
11:54
|
Ну или сделать копию ТЗ и свернуть ее по номеру.
|
|||
3
Валидатор
21.11.13
✎
11:54
|
без запроса видимо правда не обойтись
|
|||
4
Бешеная Нога
21.11.13
✎
11:56
|
(2) +1
получаешь копию тз, сворачиваешь по документу, перебираешь ее и для каждой строки свернутой тз находишь строки из главной тз. те же яйца, если есть какая-то неприязнь к запросам |
|||
5
Валидатор
21.11.13
✎
11:56
|
(4) типа 2 раза создавать одинаковые ТЗ?
|
|||
6
Валидатор
21.11.13
✎
11:57
|
ТаблицаЗагрузки = Новый ТаблицаЗначений;
ТаблицаЗагрузки.Колонки.Добавить("ДатаВходящегоДок", ОписаниеТиповД, "Дата входящего документа"); ТаблицаЗагрузки.Колонки.Добавить("НомерВходящегоДок", ОписаниеТиповС, "Номер входящего документа"); ТаблицаЗагрузки.Колонки.Добавить("Номенклатура", ОписаниеТиповС, "Наименование номенклатуры"); ТаблицаЗагрузки.Колонки.Добавить("Артикул", ОписаниеТиповС, "Артикул"); ТаблицаЗагрузки.Колонки.Добавить("Модель", ОписаниеТиповС, "Модель"); ТаблицаЗагрузки.Колонки.Добавить("ПолныйАртикул", ОписаниеТиповС, "Полный артикул"); ТаблицаЗагрузки.Колонки.Добавить("Цена", ОписаниеТиповЧ, "Цена"); ТаблицаЗагрузки.Колонки.Добавить("Количество", ОписаниеТиповЧ, "Количество"); ТаблицаЗагрузки.Колонки.Добавить("ЕдиницаИзмерения", ОписаниеТиповС, "Единица измерения"); ТаблицаЗагрузки.Колонки.Добавить("СтавкаНДС", ОписаниеТиповЧ, "НДС"); ТаблицаЗагрузки.Колонки.Добавить("Процент", ОписаниеТиповЧ, "Процент"); ТаблицаЗагрузки.Колонки.Добавить("Категория", ОписаниеТиповС, "Категория"); ТаблицаЗагрузки.Колонки.Добавить("ПРНП", ОписаниеТиповС, "ПРНП"); ТаблицаЗагрузки.Колонки.Добавить("НомерГТД", ОписаниеТиповС, "Номер ГТД"); ТаблицаЗагрузки.Колонки.Добавить("Страна", ОписаниеТиповС, "Страна"); ТаблицаЗагрузки.Колонки.Добавить("НОТ", ОписаниеТиповС, "НОТ"); вот моя одна ТЗ, делать вторую такую же? |
|||
7
Бешеная Нога
21.11.13
✎
11:58
|
скопируй и сверни по НомерВходящегоДок
|
|||
8
Валидатор
21.11.13
✎
11:59
|
(7)
ТаблицаЗагрузки.Скопировать(); ТаблицаЗагрузки.Свернуть(НомерВходящегоДок); так? |
|||
9
Валидатор
21.11.13
✎
11:59
|
(7) и потом идем
для каждого стр из ТаблицаЗагрузки цикл? |
|||
10
Бешеная Нога
21.11.13
✎
12:02
|
да
|
|||
11
Валидатор
21.11.13
✎
12:02
|
(10) так и что получим, получается так:
КопияТЗ = ТаблицаЗагрузки.Скопировать(); КопияТЗ.Свернуть("НомерВходящегоДок"); Теперь в КопияТЗ только номер документа и больше никаких данных, и по какой из таблиц мы потом циклом идем? |
|||
12
Бешеная Нога
21.11.13
✎
12:04
|
блин
ТаблицаДокументов = ТаблицаЗагрузки.Скопировать(); ТаблицаДокументов.Свернуть("НомерВходящегоДок"); Для каждого стр из ТаблицаДокументов Цикл Отбор = Новый Структура("НомерВходящегоДок", Стр.НомерВходящегоДок"); СтрокиДокумента = ТаблицаДокументов.НайтиСтроки(Отбор); Для Каждого СтрокаДокумента Из СтрокиДокумента Цикл КонецЦикла; КонецЦикла; |
|||
13
Валидатор
21.11.13
✎
12:09
|
(12) тут получается в условие
Для Каждого СтрокаДокумента Из СтрокиДокумента Цикл КонецЦикла; будут уже попадать только те документы, для которых уже есть документ с соответствующим номером так? |
|||
14
Бешеная Нога
21.11.13
✎
12:11
|
(13) ???
|
|||
15
Валидатор
21.11.13
✎
12:13
|
(12) Нужно что если документ найден, мы его перезаписываем (его ТЧ заного грузим), если нет, то создаем новый. в (12) в СтрокиДокумента и в ТаблицаДокументов везде только данные по НомерДокумента, какие я тогда данные грузить буду?
|
|||
16
Бешеная Нога
21.11.13
✎
12:16
|
ТаблицаДокументов = ТаблицаЗагрузки.Скопировать();
ТаблицаДокументов.Свернуть("НомерВходящегоДок"); Для каждого стр из ТаблицаДокументов Цикл Отбор = Новый Структура("НомерВходящегоДок", Стр.НомерВходящегоДок"); Документ = НайтиИлиСоздатьДокументПоВходящемуНомеру(НомерВходящегоДок); Документ.Товары.Очистить(); СтрокиДокумента = ТаблицаДокументов.НайтиСтроки(Отбор); Для Каждого СтрокаДокумента Из СтрокиДокумента Цикл НоваяСтрока = Документ.Товары.Добавить(); ЗАполнитьЗначенияСвойств(Новаястрока, СтрокаДокумента); КонецЦикла; КонецЦикла; |
|||
17
Валидатор
21.11.13
✎
12:16
|
(16) так в строкаДокумента попадает только одно значение: НомерВходящегоДок, там нет данных которые были в нашей первой ТаблицеЗагрузки
|
|||
18
Валидатор
21.11.13
✎
12:18
|
НайтиИлиСоздатьДокументПоВходящемуНомеру
в какой конфе есть эта процедура в общих модулях? в КА нету( |
|||
19
Валидатор
21.11.13
✎
12:27
|
че то я запутался вообще
|
|||
20
Валидатор
21.11.13
✎
12:27
|
(16) тут мы просто найдем документ и ничем его не заполним, то есть какой смысл сворачивать ТаблицуЗагрузки вообще?
|
|||
21
Бешеная Нога
21.11.13
✎
12:31
|
сорри, бро, если (16) не осилил...
|
|||
22
Валидатор
21.11.13
✎
12:32
|
(21) так а что не осилил если в (16) ни о какой загрузке данными и речи не идет?
|
|||
23
Валидатор
21.11.13
✎
12:36
|
(21)
СтрокиДокумента = ТаблицаДокументов.НайтиСтроки(Отбор); Для каждого строка из ТаблицаЗагрузки Цикл вот так идет, а в твоем случае нет |
|||
24
Бешеная Нога
21.11.13
✎
12:37
|
НайтиИлиСоздатьДокументПоВходящемуНомеру - это тебе нужно написать процедуру, которая будет искать документ по номеру (или создавать новый, если не найден).
СтрокиДокумента = ТаблицаЗагрузки.НайтиСтроки(Отбор); // тут была опечатка Для Каждого СтрокаДокумента Из СтрокиДокумента Цикл НоваяСтрока = Документ.Товары.Добавить(); ЗАполнитьЗначенияСвойств(Новаястрока, СтрокаДокумента); КонецЦикла; этот код получит все строки из основной таблицы ТаблицаЗагрузки, переберет их, и добавит в найденный (или созданный тобой документ) |
|||
25
ALFkz
21.11.13
✎
12:39
|
отсортируй тз по номерувходящего и потом в цикле
Нномер=""; Для каждого текстр из Тз цикл Если Нномер<>Текстр.номерувходящего тогда Нномер=Текстр.номерувходящего; Док=Документ.названиеДок.найтиПоНомеру(Нномер); Если ЗначениеЗАполнено(Док) тога об=Док.получитьОбъект(); Об.тч.очистить(); конецесли; конецесли; Нов=об.тч.Добавить(); конеццикла; |
|||
26
ALFkz
21.11.13
✎
12:40
|
Хотя конечно верхние варианты лучше.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |