Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ввод на основании
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Dima999222
Доброго времени суток.

Снова обращаюсь в Вам за помощью. Необходимо доработать документы ЗаказПокупателя и ПеремещениеТоваров так что бы на основании ЗаказаПокупателя заполнялась табличная часть ПеремешенияТоваров.

Попробовал при помощи конструктора ввода на основании получил следующий код:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ВнутреннийЗаказ") Тогда
        // Заполнение шапки
    ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
        // Заполнение шапки
    ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
        // Заполнение шапки
        Комментарий = ДанныеЗаполнения.Комментарий;
        Организация = ДанныеЗаполнения.Организация;
        Ответственный = ДанныеЗаполнения.Ответственный;
        Подразделение = ДанныеЗаполнения.Подразделение;
        Для Каждого ТекСтрокаВозвратнаяТара Из ДанныеЗаполнения.ВозвратнаяТара Цикл
            НоваяСтрока = ВозвратнаяТара.Добавить();
            НоваяСтрока.Количество = ТекСтрокаВозвратнаяТара.Количество;
            НоваяСтрока.Номенклатура = ТекСтрокаВозвратнаяТара.Номенклатура;
        КонецЦикла;
        Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл
            НоваяСтрока = Товары.Добавить();
            НоваяСтрока.ЕдиницаИзмерения = ТекСтрокаТовары.ЕдиницаИзмерения;
            НоваяСтрока.ЕдиницаИзмеренияМест = ТекСтрокаТовары.ЕдиницаИзмеренияМест;
            НоваяСтрока.Количество = ТекСтрокаТовары.Количество;
            НоваяСтрока.КоличествоМест = ТекСтрокаТовары.КоличествоМест;
            НоваяСтрока.Коэффициент = ТекСтрокаТовары.Коэффициент;
            НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;
            НоваяСтрока.СерияНоменклатуры = ТекСтрокаТовары.СерияНоменклатуры;
            НоваяСтрока.ХарактеристикаНоменклатуры = ТекСтрокаТовары.ХарактеристикаНоменклатуры;
            НоваяСтрока.Цена = ТекСтрокаТовары.Цена;
        КонецЦикла;
    КонецЕсли;
    //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры


Выпадает ошибка что переменная "ДанныеЗаполнения" не задана. Вопрос что присвоить этой переменной что бы все работало???

Конфигурация: УТП 1.2.7.4 (не типовая) Платформа: 8.2.14.540
Vofka
Цитата(Dima999222 @ 06.07.12, 17:29) необходимо зарегистрироваться для просмотра ссылки
Выпадает ошибка что переменная "ДанныеЗаполнения" не задана. Вопрос что присвоить этой переменной что бы все работало???

Продам СП. Дорого.
Цитата
ДокументОбъект.<Имя документа>.ОбработкаЗаполнения (DocumentObject.<Имя документа>.Filling)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ОбработкаЗаполнения (Filling)
Синтаксис:

ОбработкаЗаполнения(<ДанныеЗаполнения>, <СтандартнаяОбработка>)
Параметры:

<ДанныеЗаполнения>

Тип: Произвольный.
Значение, которое используется как основание для заполнения.
Если обработчик вызван при выполнении метода Заполнить, параметр равен параметру "Данные заполнения" метода Заполнить.
При обработке заполнения во время ввода на основании параметр имеет значение основания.
При интерактивном вводе нового из формы списка параметр является структурой, элементы которой соответствуют тем параметрам отбора формы списка, у которых способ сравнения Равно или ВСписке с единственным элементом списка. Если таких элементов отбор списка не содержит, данный параметр равен Неопределено. Если параметр "Стандартная обработка" по окончании работы обработчика равен Истина (установлен по умолчанию), система автоматически произведет заполнение одноименными элементами структуры.
<СтандартнаяОбработка>

Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет. Отказ от стандартной обработки не отменяет действие.
Значение по умолчанию: Истина
Описание:

Возникает при вводе документа на основании, а также при выполнении метода Заполнить, при вводе на основании, а также при интерактивном вводе нового. В процедуре-обработчике этого события должен быть описан сам алгоритм заполнения реквизитов документа на основании переданного значения.
logist
Цитата(Dima999222 @ 06.07.12, 17:29) необходимо зарегистрироваться для просмотра ссылки
Вопрос что присвоить этой переменной что бы все работало???

Встречный вопрос - а где вы размещаете эту процедуру? И как вызываете создание на основании
Dima999222
Цитата(logist @ 06.07.12, 17:41) необходимо зарегистрироваться для просмотра ссылки
Встречный вопрос - а где вы размещаете эту процедуру? И как вызываете создание на основании

Вот пошаговые действия в скриншотах.



pablo
Цитата
ошибка что переменная "ДанныеЗаполнения" не задана.

На какую строку ссылается ошибка?
Dima999222
Цитата(pablo @ 07.07.12, 8:45) необходимо зарегистрироваться для просмотра ссылки
На какую строку ссылается ошибка?



Огромное Вам спасибо что откликнулись на помощь. Вот скриншот ошибки:
ignsv
по последнему скрин-шоту:
понятно оно не видит ДанныеЗаполнения - Вы ж его не обьявили

посмотрите типовые заполнения ТЧ на основании.

пробуйте так:
Процедура ОбработкаЗаполнения(Основание)
................
ТЧИсточника = Основание.Товары;
// Заполнение таб.части
Для Каждого ТекСтрокаТовары Из ТЧИсточника Цикл
НовСтрока = Товары.Добавить();
...................

sava1
в Процедура ОбработкаЗаполнения(Основание)
вместо Основание - ДанныеЗаполнения
Dima999222
Цитата(sava1 @ 07.07.12, 12:31) необходимо зарегистрироваться для просмотра ссылки
в Процедура ОбработкаЗаполнения(Основание)
вместо Основание - ДанныеЗаполнения


Огромное Вам всем спасибо!!!
Вот конечный рабочий вариант:
// Процедура - обработчик события "ОбработкаЗаполнения".
//
Процедура ОбработкаЗаполнения(ДанныеЗаполнения)
        //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ВнутреннийЗаказ") Тогда
        // Заполнение шапки
    ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
        // Заполнение шапки
    ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
        // Заполнение шапки
        Комментарий = ДанныеЗаполнения.Комментарий;
        Организация = ДанныеЗаполнения.Организация;
        Ответственный = ДанныеЗаполнения.Ответственный;
        Подразделение = ДанныеЗаполнения.Подразделение;
        Для Каждого ТекСтрокаВозвратнаяТара Из ДанныеЗаполнения.ВозвратнаяТара Цикл
            НоваяСтрока = ВозвратнаяТара.Добавить();
            НоваяСтрока.Количество = ТекСтрокаВозвратнаяТара.Количество;
            НоваяСтрока.Номенклатура = ТекСтрокаВозвратнаяТара.Номенклатура;
        КонецЦикла;
        Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл
            НоваяСтрока = Товары.Добавить();
            НоваяСтрока.ЕдиницаИзмерения = ТекСтрокаТовары.ЕдиницаИзмерения;
            НоваяСтрока.ЕдиницаИзмеренияМест = ТекСтрокаТовары.ЕдиницаИзмеренияМест;
            НоваяСтрока.Количество = ТекСтрокаТовары.Количество;
            НоваяСтрока.КоличествоМест = ТекСтрокаТовары.КоличествоМест;
            НоваяСтрока.Коэффициент = ТекСтрокаТовары.Коэффициент;
            НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;
            НоваяСтрока.СерияНоменклатуры = ТекСтрокаТовары.СерияНоменклатуры;
            НоваяСтрока.ХарактеристикаНоменклатуры = ТекСтрокаТовары.ХарактеристикаНоменклатуры;
            НоваяСтрока.Цена = ТекСтрокаТовары.Цена;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры
Vofka
Dima999222, а чем отличается вариант выше от варианта в первом посте?
Dima999222
Цитата(Vofka @ 07.07.12, 13:36) необходимо зарегистрироваться для просмотра ссылки
Dima999222, а чем отличается вариант выше от варианта в первом посте?

Первой строкой в коде, а именно
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

заменил ее на
Процедура ОбработкаЗаполнения(ДанныеЗаполнения)

и все стало хорошо работать.

Еще раз благодарю всех за оперативную помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.