Имя: Пароль:
1C
1С v8
Перезаполнить табличную часть связанного документа.
,
0 applesound
 
14.01.20
12:35
Добрый день.
Перезаполняю табличную часть документа ТаможеннаяДекларацияИмпорт.Товары из документа ПоступлениеТоваровУслуг
Далаю следующем образом, ошибок много. Если есть возможность направьте.

Документ ПоступлениеТоваровУслуг в Модуле формы:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаможеннаяДекларацияИмпортТовары.НомерСтроки КАК НомерСтроки,
| ТаможеннаяДекларацияИмпортТовары.Номенклатура КАК Номенклатура,
| ТаможеннаяДекларацияИмпортТовары.Характеристика КАК Характеристика,
| ТаможеннаяДекларацияИмпортТовары.Упаковка КАК Упаковка,
| ТаможеннаяДекларацияИмпортТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаможеннаяДекларацияИмпортТовары.Количество КАК Количество,
| ТаможеннаяДекларацияИмпортТовары.СуммаНДС КАК СуммаНДС,
| ТаможеннаяДекларацияИмпортТовары.СтранаПроисхождения КАК СтранаПроисхождения,
| ТаможеннаяДекларацияИмпортТовары.НомерГТД КАК НомерГТД
|ИЗ
| Документ.ТаможеннаяДекларацияИмпорт.Товары КАК ТаможеннаяДекларацияИмпортТовары
|ГДЕ
| ТаможеннаяДекларацияИмпортТовары.Ссылка = &Ссылка
| И ТаможеннаяДекларацияИмпортТовары.Ссылка.Проведен = ИСТИНА"

Запрос.УстановитьПараметр("Ссылка",ТекущийОбъект.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Для каждого ТекСтрока ИЗ ВыборкаДетальныеЗаписи Цикл
ТекСтрока.НомерСтроки = ВыборкаДетальныеЗаписи.НомерСтроки;
ТекСтрока.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
ТекСтрока.Характеристика = ВыборкаДетальныеЗаписи.Характеристика;
ТекСтрока.Упаковка = ВыборкаДетальныеЗаписи.Упаковка;
ТекСтрока.Количество = ВыборкаДетальныеЗаписи.Количество;
ТекСтрока.СуммаНДС = ВыборкаДетальныеЗаписи.СуммаНДС;
ТекСтрока.СтранаПроисхождения = ВыборкаДетальныеЗаписи.СтранаПроисхождения;
ТекСтрока.НомерГТД = ВыборкаДетальныеЗаписи.НомерГТД;

КонецЦикла;

КонецПроцедуры
1 lodger
 
14.01.20
12:37
а переменные и ссылки туда\сюда ты от балды натыкал?
2 Очевидно
 
14.01.20
12:41
мне кажется это не так работает :
"ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Для каждого ТекСтрока ИЗ ВыборкаДетальныеЗаписи Цикл"
3 GreenSCI
 
14.01.20
12:44
Тебе нужно по ссылке на т. декл. получить объект. И уже ТЧ этого объекта заполнить нужным образом. А ты дичь полную написал.
(И если в чё Выборку обходят методом Следующий().)
4 Очевидно
 
14.01.20
12:45
ну и в общем то :
"Перезаполняю табличную часть документа ТаможеннаяДекларацияИмпорт.Товары из документа ПоступлениеТоваровУслуг"
а где у вас тут товары из документа поступления ?
5 Очевидно
 
14.01.20
12:47
судя по коду вы всё-таки заполняете документ поступления, товарами из Таможенной декларации...
6 Очевидно
 
14.01.20
12:47
хотя стоп ) ...
Для каждого ТекСтрока ИЗ ВыборкаДетальныеЗаписи Цикл
......
ТекСтрока.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
эээммм это тоже не так работает ...
7 Очевидно
 
14.01.20
12:52
ок, ладно, признайтесь, это ваша первая попытка в конфигруаторе 1С ?
(здесь мне кажется всё нетак ... начиная с того , что вы пытаетесь найти таможенную декларацию по ссылке поступления, заканчивая что вы таки не добавили не одной строки в поступление ...)
8 applesound
 
14.01.20
13:37
Пишу не так давно, даже очень недавно.
9 applesound
 
14.01.20
14:14
Нашёл ошибку.
Вместо
|ГДЕ
| ТаможеннаяДекларацияИмпортТовары.Ссылка = &Ссылка
| И ТаможеннаяДекларацияИмпортТовары.Ссылка.Проведен = ИСТИНА"

Нужно
|ГДЕ
| ТаможеннаяДекларацияИмпортТовары.Ссылка.Проведен = ИСТИНА
| И ТаможеннаяДекларацияИмпортТовары.Ссылка.ПоступлениеТоваров = &ПоступлениеТоваров"
10 Очевидно
 
14.01.20
14:15
тогда по порядку:
1. Найти связь между документами. (Каким образом нам подобрать нужную Таможенную декларацию ? если она указана в каком-либо реквизите на эту связь и стоит опираться)
2. По связи из п.1 получить ссылку таможенной декларации и добраться до табличной части товары.
3. Для каждой строки из таможенной декларации добавить строку в табличную часть "товары" документа поступления.
4. После добавления строки - заполнить необходимые поля в добавленной строке.
Думаю как-то так.
При выполнении пункта 2 можно использовать запрос, но без первого пункта ничего не получится.
11 Очевидно
 
14.01.20
14:19
Вместо:
"ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Для каждого ТекСтрока ИЗ ВыборкаДетальныеЗаписи Цикл"
=>
"ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НоваяСтрокаПоступления = ТекущийОбъект.Товары.Добавить();"

....
НоваяСтрокаПоступления.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
2 + 2 = 3.9999999999999999999999999999999...