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

Хранилище

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

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



> Програмное создание документа установки цен , Нужно из обработки создать установку цен.          
ZenBi Подменю пользователя
сообщение 12.08.22, 11:30
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 37
Спасибо сказали: 1 раз
Рейтинг: 1

Здрасте.

Имею вопрос (хотя скорее это он меня имеет).

Полностю обясню ситуацию:
Есть "заказчик" (нет). У него конфигурация - Розница (типовая пока что). Но ему категорически не нравится механизм поступления товаров (визуально не нравятся документы). Для решения этой проблемы нужно создать внешнюю обработку (чтобы не снимать с поддержки документ и не менять типовые решения), которая будет исполнять те же функции что и документ поступление товаров, а так же автоматически, без участия пользователя создавать документ Установка цен номенклатуры, всё с небольшими изменениями.

И вот проблема. Документ установка цен номенклатуры я могу вполне нормально заполнить, вот только как вызвать типовые функции по расчету цен, если они все не в общих модулях а в ФОРМЕ документа.

НУЖНО: вызвать функции формы, без её открытия из не созданного документа установки цен (нет ссылки).

Для чего это нужно: Пример - есть связанные цены опт и крупный опт, при этом Кр.Опт расчитывается по какойто формуле в зависимости от цены опт. и вот нужно, чтобы документ установки цен подтянул этот самый крупный опт. и заполнил по формуле, если в документе прихода была цена опт.




Vofka Подменю пользователя
сообщение 12.08.22, 12:02
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Цитата(ZenBi @ 12.08.22, 12:30) *
И вот проблема. Документ установка цен номенклатуры я могу вполне нормально заполнить, вот только как вызвать типовые функции по расчету цен, если они все не в общих модулях а в ФОРМЕ документа.

Мне кажется, что это проблема всех конфигураций 1С, в т.ч. современных. Не знаю почему, но почему-то разработчики не беспокоятся о возможности создания документов полностью программно. Либо на это есть какие-то причины. Вам придется поколупаться в вызовах с клиента, посмотреть что там вызывается при изменении разных полей и повставлять все эти вызовы в свою обработку, где-то покопировать серверные процедуры из формы.

Сообщение отредактировал Vofka - 12.08.22, 12:02

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

ZenBi Подменю пользователя
сообщение 12.08.22, 13:08
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 37
Спасибо сказали: 1 раз
Рейтинг: 1

Vofka @ Сегодня, 13:02 * ,

Таки да. Уже занят этим. Пожалуй ничего лучше я уже и не придумаю.

Vofka @ Сегодня, 13:02 * ,

Хотя можно ещё попробовать записать документ (без проведения дабы получить ссылку), открыть его форму, выполнить функцию "НачатьПересчетЦенЦеновыхГруп" и сразу же за этим записать установку цен и закрыть форму. Но даже в лучшем случае у пользователя на екране моргнёт форма установки цен, что вызовет у него ненужные вопросы.

Gorus Подменю пользователя
сообщение 16.08.22, 10:39
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 32
Из: Вінниця
Спасибо сказали: 64 раз
Рейтинг: 0

ZenBi @ 12.08.22, 14:08 * ,
Так можна ж і не відкривати форму.
Наведу приклад як я заповнював форму з викликом методів форми. Завдання було - заповнити і відкрити форму нового документа без збереження в базі. Думаю щось з того можна буде використати і вам:
ПарамФормы = Новый Структура;
Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаОбщая", ПарамФормы);
ДанныеФормы = Форма.Объект;
массивТоваров = Новый Массив(); // масив структур, для заповнення ТЧ
ДанныеФормы.Организация = Объект.Организация;
ДанныеФормы.Контрагент = Контрагент;
ДанныеФормы.Товары.Очистить();
ЗаполнитьРННаСервере(ДанныеФормы, массивТоваров);
    
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копіюємо дані форми в об'єкт форми і далі відкриваємо її
Форма.ПриИзмененииЦеныИВалюты(ДанныеФормы.ВалютаДокумента, ДанныеФормы.КурсВзаиморасчетов, ДанныеФормы.КратностьВзаиморасчетов); // Щоб викликалось "УправлениеФормой" і перерахувались підсумки
Форма.Открыть();

Суть в тому, що дані форми можна заповнити потрібними нам значеннями (в тому числі і на сервері) і передати назад у форму, де вони опрацюються вбудованими методами. У моєму випадку - я далі показую форму користувачу і він вирішує чи зберігати ці дані чи ні, а у вашому - можна не відкриваючи форму просто забрати назад перераховані дані. Мало б спрацювати.

Доповню ще: найгірший випадок у мене був при заповнені табеля, там метод перерахунку - не експортний, і викликати його зовні було неможливо ніяк. Тому прийшлось через розширення додати у форму ще два метода, ось так:
&НаКлиенте
// Для можливості оновленя (перезаповнення) табличної частини при завантажені табеля з файлу
Процедура ОбновитьДанные() Экспорт
    ОбновитьДанныеНаСервере();
КонецПроцедуры //ОбновитьДанные()

&НаСервере
Процедура ОбновитьДанныеНаСервере()
    УчетРабочегоВремениФормы.ТабельПослеЗаписиНаСервере(ЭтаФорма, Неопределено, Неопределено);
КонецПроцедуры //ОбновитьДанныеНаСервере()


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

ZenBi Подменю пользователя
сообщение 16.08.22, 10:39
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 37
Спасибо сказали: 1 раз
Рейтинг: 1

Gorus @ Сегодня, 11:33 * ,
О! Нехай це і не пряма відповідь проте наштовхує на роздуми.
Дякую!

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


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

 

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