Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как программно заполнить табличную часть документа 1с 7.7 конф 7.7.00          
ZUBR Подменю пользователя
сообщение 16.06.20, 0:43
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Здравствуйте!
У меня в РасходнойНакладной есть реквизит ПриВыд с типом Справочник.Номенклатура и реквизит Ак с типом Число.
Из єтой РасходнойНакладной я создаю новую РасходнуюНакладную.
В модуле формы прописан код создания новой расходной накладной через СоздатьОбъект. Название объекта Акс.
Мне нужно, чтобы в табличной части нового документа программно прописывался товар ПриВыд в количестве Ак.
Привожу кусок кода

Акс.НоваяСтрока();
    Акс.Товар=ПриВыд;
    Акс.Количество=Ак;
...........................................................
         Акс.Записать();

Программа создает этот документ, но не подставляет сама ни единиц в графу единицы, ни цены, не считает суммы, короче, только проставляет эти два параметра. Как сделать так, чтобы программно проставлялись в табличную часть все реквизиты товара ПриВыд?
Да, и у меня еще есть ПриВыд2 и ПриВыд3 с Ак2 и Ак3 соответственно. То есть, мне нужно программно внести в табличную часть три товара с ценами, подсчитать сумму, ну, вобщем, программно создать для них расходную накладную. Спасибо!
P.S. Пустая накладная у меня создается без проблем. Меня интересует лишь заполнение табличной части, используя товар ПриВыд и количество Ак

denis84 Подменю пользователя
сообщение 16.06.20, 8:04
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

ZUBR @ Сегодня, 1:43 * ,
Добрый день! Для остальных реквизитов - прописать эти процедуры изменения т.е. при изменении ПриВыд и т.д. должна отрабатывать процедура

denis84 @ Сегодня, 8:47 * ,
Т. е. на реквизит ПриВыд назначить процедуру изменения остальных реквизитов.

Спасибо сказали: ZUBR,

denis84 Подменю пользователя
сообщение 16.06.20, 10:25
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

denis84 @ Сегодня, 9:04 * ,
Процедура ПриИзмПривыд()
Акс.цена = товар.цена;
Акс.Количество=Ак;
Акс. Сумма = Акс.количество*акс.цена;

Акс.Записать();
Что такое надо написать и установить эту процедуру на реквизит привыд

Спасибо сказали: ZUBR,

ZUBR Подменю пользователя
сообщение 16.06.20, 18:52
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

denis84 @ Сегодня, 11:25 * ,
Спасибо! Но мне хотелось чего-то попроще. Чтобы как через кнопку Подбор. А то там еще надо и единицы прописывать, и, наверное, итог в конце...
Но если по-другому нельзя, буду дублировать...

denis84 Подменю пользователя
сообщение 16.06.20, 20:02
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

ZUBR @ Сегодня, 19:52 * ,
Для подбора есть процедура в глобальном модуле прописана. Можете там посмотреть. Но смысл такой же

Спасибо сказали: ZUBR,

ZUBR Подменю пользователя
сообщение 17.06.20, 18:26
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

denis84 @ Вчера, 11:25 * ,
все замечательно, только Акс.Цена = Товар.Цена; не работает. Не находит поля агрегатного объекта Цена.
Оно и понятно. Ведь в справочнике номенклатура нет ореквизита Цена. Цены находятся в подчиненном справочнику "Справочник.Номенклатура" справочнике "Справочник. Цены".
Кстати, как-то пытался въехать, как эти два справочника взаимодействуют, но так и не понял.
Подскажите, как получить Акс.Цена?
Акс.цена = товар.цена;
не работает.
Спасибо!

denis84 Подменю пользователя
сообщение 18.06.20, 9:07
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

Добрый день! Если не ошибаюсь, то вроде так:
    
    ЦеныТовара = СоздатьОбъект("Справочник.Цены");
    ЦеныТовара.ИспользоватьВладельца(Товар);
    ЦеныТовара.ВыбратьЭлементы();
    Пока ЦеныТовара.ПолучитьЭлемент()  = 1 Цикл
        Если ЦеныТовара.ПометкаУдаления() = 1 Тогда
            Продолжить;
        КонецЕсли;
        
        Результат = ЦеныТовара.ТекущийЭлемент();
    
    КонецЦикла;

mut Подменю пользователя
сообщение 18.06.20, 10:45
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 199
Из: Новая Каховка
Спасибо сказали: 203 раз
Рейтинг: 237.5

После того как заполнили товар в строке, смотрите, что вызывается в форме при изменении товара и копируйте вызов.
Там же будет и заполнение цены.
После того как заполнили цену, количество, смотрите, как в форме вызывается пересчет строки. Копируйте вызов.

ZUBR Подменю пользователя
сообщение 19.06.20, 20:29
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

denis84 @ Вчера, 10:07 * ,
Не совсем понятно. Что такое Результат? И что такое Продолжить?

denis84 @ Вчера, 10:07 * ,
Только что пытался разобраться в глобальном модуле, как там это делается. Не смог. Мало знаний и информации.

denis84 Подменю пользователя
сообщение 19.06.20, 21:17
Сообщение #10

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

ZUBR @ Сегодня, 21:29 * ,
Если элемент помечен на удаление ищем следующий.

Результат - это и есть цена. Напишите у себя это. Подставьте свои переменные. Проверьте через сообщить(). Это кусок кода из торговли и склад 7.7. Вы спрашивали,как выбрать из подчинённого справочник а цены получить цену товар,вот этот код Вам поможет. Только замените на свои переменные, вот ту строку "продолжить" можете выбросить.

Сообщение отредактировал denis84 - 19.06.20, 21:21

Спасибо сказали: ZUBR,

ZUBR Подменю пользователя
сообщение 20.06.20, 1:13
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

mut @ 18.06.20, 11:45 * ,
Ваш метод, к сожалению, не действует, потому что код заполнения документа находится в другом документе.
Акс =СоздатьОбъект ("Документ.РасходнаяНакладная"); 
.................................................................................;
.................................................................................;
           Акс.НоваяСтрока();
        Акс.Товар=ПриВыд;
               глПриИзмененииТовара(Контекст);
        Акс.Количество=Ак;
                глВыч_суммы_накл(Контекст);  
.................................................................................;

То есть,ссылка глПриИзмененииТовара(Контекст); действует на текущий документ, а не на создаваемый... 64000000.gif

mut Подменю пользователя
сообщение 22.06.20, 11:27
Сообщение #12

Завсегдатай
****
Группа: Пользователи
Сообщений: 199
Из: Новая Каховка
Спасибо сказали: 203 раз
Рейтинг: 237.5

Цитата(ZUBR @ 20.06.20, 2:13) *
То есть,ссылка глПриИзмененииТовара(Контекст); действует на текущий документ, а не на создаваемый.


Ну при копировани, конечно, нужно понимать, что происходит в копируемом куске. В этом случае "Контекст" должен передать контекст вашего создаваемого документа, по этому вам у себя надо писать
глПриИзмененииТовара(Акс);

Точно также и далее.

Спасибо сказали: ZUBR,

ZUBR Подменю пользователя
сообщение 22.06.20, 22:04
Сообщение #13

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

mut @ Сегодня, 12:27 * ,
все получилось! Теперь я знаю, что такое "контекст"!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 18:28
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!