|
Изменение данных табличной части в документе, основываясь на проведении другого документа | ☑ | ||
---|---|---|---|---|
0
Lepexa207
11.04.24
✎
07:27
|
1С: УТ11
Здравствуйте, выполнил такую задачу как: При проведении документа "Приобретение товаров и услуг" создать на основе/открыть существующую "Установку цен номенклатуры". Получился следующий код в модуле формы документа "Приобретения товаров и услуг": &НаКлиенте Процедура АЗЦ_ПослеЗаписиВместо(ПараметрыЗаписи) Оповестить("Запись_ПриобретениеТоваровУслуг", ПараметрыЗаписи, Объект.Ссылка); СобытияФормКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи); ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи); // СтандартныеПодсистемы.ПодключаемыеКоманды Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи); КонецЕсли; // Здесь начинается мой код СсылкаЗакупЦена = ПолучитьСвязанныеДокументыНаСервере(); Если СсылкаЗакупЦена = Неопределено Тогда // Открыть новый документ ПараметрыФормы = Новый Структура("Основание", Объект.Ссылка); ОткрытьФорму("Документ.УстановкаЦенНоменклатуры.ФормаОбъекта", ПараметрыФормы); ИначеЕсли СсылкаЗакупЦена <> Неопределено Тогда // Открыть связанный документ ПараметрыФормы = Новый Структура("Ключ", СсылкаЗакупЦена); ОткрытьФорму("Документ.УстановкаЦенНоменклатуры.ФормаОбъекта", ПараметрыФормы); КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьСвязанныеДокументыНаСервере() // Для поиска связанного документа СвязанныеДокументы = КритерииОтбора.СвязанныеДокументы.Найти(Объект.Ссылка); Для Каждого ТекСвязанныйДокумент из СвязанныеДокументы Цикл Если СтрНайти(ТекСвязанныйДокумент.Ссылка, "Установка цен номенклатуры") > 0 Тогда Возврат ТекСвязанныйДокумент.Ссылка; КонецЕсли; КонецЦикла; КонецФункции У меня возникли вопросы: 1. Как мне изменить данные табличной части при открытии существующего документа, чтобы "Закупочная цена" поменялась в документе "Установка цен", основываясь на документе "Приобретение товаров и услуг". 2. Можно ли оптимизировать мою функцию, так как при обработке файловая система грузит до 20 секунд (на серверную пока не жалуются, но в ней быстрее, до ~5 секунд, главная проблема в критериях отбора, но как её фиксить я без понятия) |
|||
1
Ненавижу 1С
гуру
11.04.24
✎
08:06
|
Не надо так делать.
Сделайте регламентное задание по расписанию. Оно будет смотреть цены в ПОСЛЕДНИХ приобретениях и сравнивать с регистром цен. Если есть различия - создавать изменение цен. |
|||
2
Ненавижу 1С
гуру
11.04.24
✎
08:06
|
Хотя файловая база данных... грустно
|
|||
3
maxab72
11.04.24
✎
08:10
|
Лучше фоновым заданием. Проводите документ поступления, запускаете фоновое задание и оно спокойно, никому не мешая, проверяет цены и создает документ на их изменение. Регламентное задание тут лишнее.
|
|||
4
Lepexa207
11.04.24
✎
08:20
|
(3) Спасибо, много раз слышал о фоновом задании, но так ни разу его не реализовал. Буду разбираться, вникать.)
|
|||
5
Ненавижу 1С
гуру
11.04.24
✎
08:28
|
(3) так-то согласен. Из минусов - если товар стабильно постоянно приходит по одной цене - вы каждый раз фиксируете эту цену в регистре
|
|||
6
Злопчинский
11.04.24
✎
16:08
|
(1) "Сделайте регламентное задание по расписанию"
а до того момента как отрабоатет регламентное задание - менеджер успел вкорячить документ расхода/реализации, по старой цене... ? |
|||
7
АгентБезопасной Нацио
11.04.24
✎
16:10
|
(6) так он только закупочную меняет. А она по сути только справочная.
|
|||
8
RVN
12.04.24
✎
08:08
|
(0) а использовать соглашение у которого стоит галочка "Регистрировать цены поставщика автоматически" не вариант?
|
|||
9
Lepexa207
12.04.24
✎
08:52
|
(8) Думаю, что не вариант. Мб я не до конца понимаю сам функционал соглашения, но у нас бухгалтер после проведения "Приобретения товаров и услуг" должен также провести "Установку цен номенклатуры". Я упростил ему работу, не нажимая на кнопку "Создать на основании", делая это сразу после записи/проведения документа.
|
|||
10
RVN
12.04.24
✎
09:03
|
(9) Если я правильно помню - то в этом случае документ как раз и регистрирует цены поставщика (т.е. по факту делается тоже что и при создании проведении документа "Установка цен номенклатуры").
Если же вам нужно регистрация именно прайсовых цен, то правильнее ИМХО, делать не создание/изменение документа "Установка цен номенклатуры", а приделать к поступлению движения по нужному регистру. |
|||
11
Lepexa207
12.04.24
✎
09:27
|
(10) Так, я просмотрел все документы и там везде стоит это соглашение. Так что теперь я тем более озадачен))
Просто проблема в том, что для удобности просмотра изменения цены важно фиксировать её в "Установке цен номенклатура", чтобы она была в отчете "Связанные документы". |
|||
12
unbred
12.04.24
✎
09:29
|
(11) цены в регистре есть. какие тебе отчеты ещё нужны?
работа ради работы? |
|||
13
Lepexa207
12.04.24
✎
09:34
|
(12) Я просто упростил работу бухгалтеру, так как ему приходилось проводить "приобретение", а следом создать на основании "установку цен". После чего она фиксируется в "связанных документах". Я без понятия про саму структуру работы предприятия досконально, но им важно видеть установку во "связанных документах".
|
|||
14
maxab72
12.04.24
✎
09:51
|
(5) Написано же "проверяет цены" - если не поменялись - не регистрируем.
(8) Не всегда возможно. Иногда Поступление товаров услуг проводит бухгалтерия, а иногда склад (или офис менеджер, если закупает что-то вспомогательное), склад не должен иметь доступа к документам установки цен, и тут выручает фоновое задание, которое можно запускать в привелигированном модуле. |
|||
15
АнализДанных
12.04.24
✎
10:02
|
(0) Если тебе всегда надо ставить такую же цену, как и в поступлении, то лучше сделать так, чтобы поступлении делало движения на регистре "Цены номенклатуры". В этом случае у тебя всегда будет соответствие цены на регистре и в документе.
Во всех остальных случаях могут быть следующие проблемы: например было 3 поступления с одинаковыми ценами. 1-й док цена 40 руб. 2-й док цена 40 руб. 3-й док цена 40 руб. Если пользователь заметил, что ошибся во втором документе и исправит там цену задним числом на 50 руб., то в этом случае возникнет проблема, что 3-й документ должен опять поставить цену в 40 руб., но это не произойдет, т.к. для этого пользователь должен открыть его руками и перезаписать. Получится: 1-й док цена 40 руб. 2-й док цена 50 руб. - здесь цена изменилась на 50 3-й док цена 40 руб. - здесь должна вернуться на 40, но это не произойдет. Я бы еще галочку в документе предусмотрел "регистрировать цены", на случай, если надо делать какие-то исключения в документах. |
|||
16
RVN
12.04.24
✎
10:26
|
(14) Так а он и не будет иметь. Это типовой функционал из коробки. ПТУ сама делает движения.
|
|||
17
Lepexa207
12.04.24
✎
11:12
|
(15) До конца не понимаю концепт данной логики, ведь после каждого проведения ПТУ открывается УЦН, её проводим и происходит движение по регистру "Цены номенклатуры". Регистр сведений ж не обновляет дату на текущую, если повторно изменить. Просто зафиксируется новая Закупочная цена на тот промежуток времени 2-го документа.
|
|||
18
Lepexa207
12.04.24
✎
11:13
|
(15) а так, просмотрев несколько документов, там везде стоит галочка)
|
|||
19
Garykom
гуру
12.04.24
✎
11:38
|
(0) Регламентное с фоновым
Регламентное может как работать по расписанию (1) по всем докам шерстя расхождения с ценами Так и запускаться после проведения документа ПТУ с параметром в котором ссылка на документа Проверка что регламентное еще не выполняется, и запускаем фоновое для обработки одного переданного ПТУ Для полного феншуя заиметь РС (аля задания-документы для обработки регламентным) в который писать ссылки на доки, требующие пост-обработки Примерно как механизм "отразить в регламентированном учете" (для документов) в ERP/КА |
|||
20
АнализДанных
12.04.24
✎
12:26
|
(17) Я хотел обозначить недостатки реализациии, которую предлагали выше, когда фоновое задание перезаполнет цены только в том случае, если есть изменения цены.
Если мы что-то задним числом правим, то после этого документа придется перезаполнять все последующие, т.к. если раньше будущие документы цены не меняли, т.к. они соответствовали ценам предыдущих документов, то теперь их всех надо перезаполнять В моем примере из (15) с 3-м документом что делать ?, он же не знает, что во втором цена поменялась задним числом, и теперь ему тоже надо перезаполнить свою установку цен. |
|||
21
unbred
12.04.24
✎
12:43
|
(20) а если через пол года изменят первый документ.
программно. а он в закрытом периоде. и партии по тем ценам уже прошли. а если...я тебе 2 миллиона "если" напишу, при которых все твои условия, которые ты опишешь в фоновом , сломаются. |
|||
22
RVN
12.04.24
✎
12:59
|
(19) А зачем такие навороты? и чего уж тогда не сохранять УПД в pdf, потом посылать его на емейл, где при получении он будет подгружен в веб сервис из которого потом его тянуть в 1С по http, распознавать и тут то писать в регистр цены?
|
|||
23
Garykom
гуру
12.04.24
✎
13:34
|
(22) Чтобы не словить проблемы при массовом перепроведении документов обработкой
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |