Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
1C 8.x

В документе «ПродажаТоваров» на форме документа написать процедуру

22.09.2014, 14:53. Показов 3527. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В документе «ПродажаТоваров» на форме документа написать процедуру, позволяющую при выборе товара автоматически определять его текущую (последнюю с регистра сведений «ЦеныТоваров») и заносить её в соответствующую колонку табличной части «Товары».

1C
1
2
3
4
5
6
7
8
9
10
11
12
Процедура ТоварыТоварПриИзменении(Элемент)
    ВыбТовар=ЭлементыФормы.Товары.ТекущиеДанные.Товар;
    Отбор=Новый Структура ("Товар", ВыбТовар);
    сЦена=РегистрыСведений.ЦеныНаТовары.ПолучитьПоследнее(ТекущаяДата(),Отбор);
    ЭлементыФормы.Товары.ТекущиеДанные.Цена=сЦена.Цена;
//Для пересчёта Суммы
    ЭлементыФормы.Товары.ТекущиеДанные.Сумма=
    ЭлементыФормы.Товары.ТекущиеДанные.Цена*
    ЭлементыФормы.Товары.ТекущиеДанные.Количество;
//или для пересчёта с помощью процедуры РасчётСуммы()
  РасчётСуммы();
КонецПроцедуры
Добавлено через 1 минуту
Цитата Сообщение от Fenlou Посмотреть сообщение
РасчётСуммы();
{Документ.ПродажаТоваров.Форма.ФормаДоку мента(19,3)}: Процедура или функция с указанным именем не определена (РасчётСуммы)
<<?>>РасчётСуммы();
Как исправить?

Добавлено через 2 минуты
Цитата Сообщение от Fenlou Посмотреть сообщение
РасчётСуммы();
{Документ.ПродажаТоваров.Форма.ФормаДоку мента(19,3)}: Процедура или функция с указанным именем не определена (РасчётСуммы)
<<?>>РасчётСуммы();
Как исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2014, 14:53
Ответы с готовыми решениями:

В документе «ПродажаТоваров» на форме документа написать процедуру
В документе «ПродажаТоваров» на форме документа написать процедуру, позволяющую при изменении количества осуществлять проверку наличия...

Для документа "ПродажаТоваров" на форму списка добавить "ПолеВвода"
Для документа &quot;ПродажаТоваров&quot; на форму списка добавить &quot;ПолеВвода&quot; с типом &quot;СправочникСсылка.Контрагенты&quot;. На событие формы...

Как написать процедуру, которая обрабатывала бы изменения в любом из контролов, представленных на форме
Как написать процедуру, которая обрабатывала бы изменения в любом из контролов, представленных на форме. Например, имеется форма, на...

46
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
23.09.2014, 15:29
Студворк — интернет-сервис помощи студентам
Fenlou, версия платформы какая? в помощи по f1 функция находится?
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
23.09.2014, 15:35  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
версия платформы какая? в помощи по f1 функция находится?
8.0, нет
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
23.09.2014, 15:39
Fenlou, версия платформы какая? в помощи по f1 функция находится?

Добавлено через 1 минуту
Fenlou, попробовать так:
Вместо Если Не ЗначениеЗаполнено(ЭлементыФормы.Товары.Т екущиеДанные.Сумма)
Сделать Если ЭлементыФормы.Товары.ТекущиеДанные.Сумма = неопределено Или
ЭлементыФормы.Товары.ТекущиеДанные.Сумма = 0 тогда
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
23.09.2014, 15:48  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
попробовать так:
1C
1
2
3
4
5
6
7
8
9
Процедура РасчётСуммы()
//Какие то действия, которые должны выполнится
//Например:
Если Не ЭлементыФормы.Товары.ТекущиеДанные = Неопределено Тогда
Если Не ЭлементыФормы.Товары.ТекущиеДанные.Сумма = Неопределено Тогда
ЭлементыФормы.Товары.ТекущиеДанные.Сумма = ЭлементыФормы.Товары.ТекущиеДанные.Цена * ЭлементыФормы.Товары.ТекущиеДанные.Количество;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Так?
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
23.09.2014, 15:50
Fenlou, да
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
23.09.2014, 15:51  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
да
Спасибо, еще один вопрос там было две формы, при запуске режима предприятия запускается форма списка, а мне надо форму документа. Как сделать?
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
23.09.2014, 15:53
Fenlou, форма документа запускается, когда только вносятся данные в документ.
По умолчанию всегда открывается форма списка.
Далее вы находите документ нужный или вводите и тогда откроется форма элемента.
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
23.09.2014, 15:58  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
форма документа запускается, когда только вносятся данные в документ.
По умолчанию всегда открывается форма списка.
Далее вы находите документ нужный или вводите и тогда откроется форма элемента.
Спасибо! А что означает "Если Не"? Просто в 1с определен оператор "Если"
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
23.09.2014, 16:00
Fenlou, если тогда - это одна конструкция.
Если не абв = бва
Если абв <> бва
идентичные конструкции
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
23.09.2014, 16:01  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
если тогда - это одна конструкция.
Если не абв = бва
Если абв <> бва
идентичные конструкции
то есть можно так:
1C
1
2
Если  ЭлементыФормы.Товары.ТекущиеДанные <> Неопределено Тогда
Если  ЭлементыФормы.Товары.ТекущиеДанные.Сумма <> Неопределено Тогда
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
23.09.2014, 16:02
Fenlou, да и так тоже.
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
23.09.2014, 16:05  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
да и так тоже.
Спасибо за всё!
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
23.09.2014, 16:07
Fenlou, не за что
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
25.09.2014, 15:56  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
не за что
Блин, препод сказал, что процедура
1C
1
2
3
4
5
6
7
8
9
10
11
12
Процедура ТоварыТоварПриИзменении(Элемент)
    ВыбТовар=ЭлементыФормы.Товары.ТекущиеДанные.Товар;
    Отбор=Новый Структура ("Товар", ВыбТовар);
    сЦена=РегистрыСведений.ЦеныНаТовары.ПолучитьПоследнее(ТекущаяДата(),Отбор);
    ЭлементыФормы.Товары.ТекущиеДанные.Цена=сЦена.Цена;
//Для пересчёта Суммы
    ЭлементыФормы.Товары.ТекущиеДанные.Сумма=
    ЭлементыФормы.Товары.ТекущиеДанные.Цена*
    ЭлементыФормы.Товары.ТекущиеДанные.Количество;
//или для пересчёта с помощью процедуры РасчётСуммы()
  РасчётСуммы();
КонецПроцедуры
Не правильно, надо через Документы
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
25.09.2014, 16:06
Fenlou, не понял. Как именно через документы? Документы установки ЦенНаТовары?оО
0
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
25.09.2014, 21:26  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
не понял. Как именно через документы? Документы установки ЦенНаТовары?оО
да.
У этого документы реквизит - "ОтветственноеЛицо"
табличная часть - "товары" с реквизитами "Товар" и "Цена"
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
26.09.2014, 10:17
Fenlou, какой забавный преподаватель. Преподаватель в курсе, что работает быстрее регистр или документ? и для чего документ пишет данные в регистр?
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
26.09.2014, 13:52  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
какой забавный преподаватель. Преподаватель в курсе, что работает быстрее регистр или документ? и для чего документ пишет данные в регистр?
может
1C
1
сЦена=РегистрыСведений.ЦеныНаТовары.ПолучитьПоследнее(ТекущаяДата(),Отбор);
это оставить, а там документы поставить?
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
26.09.2014, 14:01
Цитата Сообщение от Fenlou Посмотреть сообщение
ПолучитьПоследнее
это только для регистров сведений. В документах такого нет и не может быть.
Для того чтобы из документов выбрать (и замучать к чертякам сервак), нужно сделать запрос, где передать номенклатуру которую надо найти в табличной части этого документа и получить его цену.
Что то типа этого.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
Функция ПолучитьЦену(Номенклатура)
Запрос = Новый запрос;
Запрос.Текст = "Выбрать Первые 1 Товары.Цена Из
|Документ.УстановкаЦенНоменклатурыТовары Как Товары
|Где Товары.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Результат = Запрос.Выполнить.Выбрать();
Если Результат.Следующий() Тогд
Возврат Результат.Цена;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
1
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 489
26.09.2014, 15:32  [ТС]
Цитата Сообщение от 1c-k Посмотреть сообщение
это только для регистров сведений. В документах такого нет и не может быть.
Для того чтобы из документов выбрать (и замучать к чертякам сервак), нужно сделать запрос, где передать номенклатуру которую надо найти в табличной части этого документа и получить его цену.
Что то типа этого
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Процедура ТоварыСуммаПриИзменении(Элемент)
    ЭлементыФормы.Товары.ТекущиеДанные.Сумма=
    ЭлементыФормы.Товары.ТекущиеДанные.Цена*
    ЭлементыФормы.Товары.ТекущиеДанные.Количество;
    ЭлементыФормы.Итого.Значение=ЭлементыФормы.Товары.Значение.Итог("Сумма");
 
КонецПроцедуры
 
Процедура РасчётСуммы()
//Какие то действия, которые должны выполнится
//Например:
Если  ЭлементыФормы.Товары.ТекущиеДанные <> Неопределено Тогда
Если  ЭлементыФормы.Товары.ТекущиеДанные.Сумма <> Неопределено Тогда
ЭлементыФормы.Товары.ТекущиеДанные.Сумма =
ЭлементыФормы.Товары.ТекущиеДанные.Цена * ЭлементыФормы.Товары.ТекущиеДанные.Количество;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
 
//Процедура ТоварыТоварПриИзменении(Элемент)
//  ВыбТовар=ЭлементыФормы.Товары.ТекущиеДанные.Товар;
//  Отбор=Новый Структура ("Товар", ВыбТовар);
//  сЦена=РегистрыСведений.ЦеныНаТовары.ПолучитьПоследнее(ТекущаяДата(),Отбор);
//  ЭлементыФормы.Товары.ТекущиеДанные.Цена=сЦена.Цена;
////Для пересчёта Суммы
//  ЭлементыФормы.Товары.ТекущиеДанные.Сумма=
//  ЭлементыФормы.Товары.ТекущиеДанные.Цена*
//  ЭлементыФормы.Товары.ТекущиеДанные.Количество;
////или для пересчёта с помощью процедуры РасчётСуммы()
// 
//  РасчётСуммы();
//КонецПроцедуры
 Функция ПолучитьЦену(Номенклатура)
Запрос = Новый запрос;
Запрос.Текст = "Выбрать Первые 1 Товары.Цена Из
|Документ.УстановкаЦенНоменклатурыТовары Как Товары
|Где Товары.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Результат = Запрос.Выполнить.Выбрать();
Если Результат.Следующий() Тогд
Возврат Результат.Цена;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
{Документ.ПродажаТоваров.Форма.ФормаДоку мента(41,27)}: Ожидается ключевое слово 'Тогда' ('Then')
Если Результат.Следующий()<<?>> Тогд
{Документ.ПродажаТоваров.Форма.ФормаДоку мента(41,32)}: Ожидается символ ';'
Если Результат.Следующий() Тогд<<?>>
{Документ.ПродажаТоваров.Форма.ФормаДоку мента(43,1)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')
<<?>>Иначе

Добавлено через 6 минут
Цитата Сообщение от 1c-k Посмотреть сообщение
Тогд
Исправил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2014, 15:32

Подскажите процедуру в Документе
Ребята в общем проблема такая:есть поле &quot;сумма&quot; и там формируется значение:поле &quot;количество товара&quot; умножается на поле...

БП 3.0 Пропал Ответственный (пользователь) в форме списка и форме документа РеализацииТоваровИУслуг
Добрый день уважаемые форумчане !!! Прошу помощи у гуру... имеется 2 базы БП 3.0 (одного и того же релиза) Которые заносились в разное...

как в документе обратиться к значением другого документа
Версия 8.1 очень поможете я ламер но мне очень надо!

Как во второй форме вызвать процедуру или функцию созданную в первой форме
Короче создал первую форму, в ней процедуру. Потом создал вторую форму и хотел в ней вызвать процедуру созданную в первой форме, но забыл...

Заполнение полей в документе word данными из документа excel
Имеется типовой документ word, назовем его АКТ, в котором вся информация остается неизменной, за исключением нескольких полей (см. рисунок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru