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

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

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

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

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

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



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

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

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

Vofka @ Сегодня, 13:02 необходимо зарегистрироваться для просмотра ссылки ,

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

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

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

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

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