Как при проведении документа изменить реквизит. |
Я |
11.05.21 — 13:08
Как при проведении документа изменить реквизит? Например, надо заполнить реквизит СебестоимостьСписания. Себестоимость будет известна после формирования движений по регистру. Пытаюсь записать в процедуре ОбработкаПроведения, не записывается. Т.е. в отладчике значение меняется, но не записывается. В толстых формах вроде работало а в УФ как?
Спасибо
1 — 11.05.21 — 13:09
(0) Конфигурация какая?
2 — 11.05.21 — 13:09
руки оборвать за такое.
А так — записать ещё раз надо.
3 — 11.05.21 — 13:10
(0) Это что ж за себестоимость такая и нафига она в этом документе в реквизите?
4 — 11.05.21 — 13:11
(0) А чем регистр сведений не подходит?
5 — 11.05.21 — 13:22
Пользователь хочет видеть себестоимость. Регистр создавать не хотелось все таки конфа типовая хочется поменьше изменений
6 — 11.05.21 — 13:24
(5) Если у тебя типовая — то регистр СС у тебя уже есть
7 — 11.05.21 — 13:24
(5) для этого есть валовая прибыль предприятия, либо себестоимость товаров предприятия
8 — 11.05.21 — 13:25
(5) научите юзверов пользоваться отчетами, а не изобретать велосипеды
9 — 11.05.21 — 13:26
(5) За такое даже не руки отрывать, просто тихо в лес вывозить и закапывать под елкой
10 — 11.05.21 — 13:29
(8) Легко сказать). А так для любопытных я просто вывожу в документе список нужного регистра с выбранными полями, пусть глазеют цифиры напрямую, дабы сами не могут ни отчета построить — ни регистры посмотреть.
11 — 11.05.21 — 13:30
(9) А чем это черевато? Что может сломаться?
12 — 11.05.21 — 13:31
(11) Руки. У того, кто это сделал.
13 — 11.05.21 — 13:31
(10) лучше все таки потратить время и научить пользоваться отчетами, в крайнем случае внешней обработкой прикрутить внешний отчет к документу, который будет отображать данные в удобочитаемой форме
14 — 11.05.21 — 13:35
(11) Будет страшное сообщение, что документ изменен и надо его записать еще раз. Такая ситуация не смущает?
15 — 11.05.21 — 13:35
(13) Мне же не в одном месте выводить. Еще в журнале документов.графа должна быть.
16 — 11.05.21 — 13:36
(11) в типовой конфе есть функционал по расчету себестоимости. Есть понятие предварительного и конечного расчета. Конечный расчет происходит при закрытии месяца, тогда уже заполняется РН СебестоимостьТоваров (для продажи). То что вы хотите, это снять с замка типовую конфу, добавить в документ реквизит, с себестоимостью. Завтра пришел новый приход товара по другой цене, вам придется перезаписывать документы, чтобы пересчитать ваш реквизит.
17 — 11.05.21 — 13:36
(16) в итоге вместо типового функционала вы хотите собрать свой велосипед с квадратными колесами
18 — 11.05.21 — 13:40
(16) Это я им объяснил они готовы.
(14) Страшного сообщения нет. Уже попробовал
Очень смущает то что никто не может объяснить в чем проблема. Похоже на какое-то религиозное табу.
19 — 11.05.21 — 13:46
(18) ну ты уже давал команду Записать() в обработке проведения? Всё нормально? Основная проблема, что у тебя все обработчики ПередЗаписью и ПриЗаписи выполнятся по 2 раза.
20 — 11.05.21 — 13:47
(18) Так сообщения нет, поскольку реквизит не меняется.
21 — 11.05.21 — 13:47
(18) первая проблема это в непонимании матчасти… и в данном случае даже не 1С. Т.к. вот это «Себестоимость будет известна после формирования движений по регистру» уже само по себе дичь. Мы же говорим про списание? А раз так, то себестоимость списания ты знаешь (ну или можешь узнать) в ПередЗаписью, а следовательно не надо тебе трогать ОбработкуПроведения.
22 — 11.05.21 — 13:50
(18) когда поработаете в конторе, где в день бьют по 500+ заказов и реализуете такой функционал, 1ска колом встанет. У вас есть 2 типовых регистра, откуда вы можете подтянуть себестоимость, но вы делаете свой реквизит, который заставит вас множество раз перезаписывать документ.
23 — 11.05.21 — 13:54
(11) Различные кости в организме могут сломаться
А если серьезно, то я даже не буду говорить, что технически это решение — абсолютно лютый шлак
Просто ответь, что ты будешь делать, когда у тебя по какой-то причине (абсолютно почхать по какой) документ покажет одни цифры, а в регистрах будут другие?
Будешь обиженно кричать, что это разные объекты в базе и они вполне могут рассинхронизироваться?
24 — 11.05.21 — 13:55
Я всё жду имя конфигурации.
25 — 11.05.21 — 13:55
(20) Реквизит меняется. Я его на форму вывел. Руками изменил и провел. Реквизит изменился, лишних сообщений нет.
(19) Обработчики не выполняются я прописал ОбменДанными.Загрузка = истина
26 — 11.05.21 — 13:56
(25) Руками себестоимость изменил?
27 — 11.05.21 — 13:56
(18) Сложно объяснить, в чем проблема, что у тебя в руке граната, а чеки в ней нет, если ты не знаешь, что такое граната, что такое чека и что бывает с гранатой без чеки
28 — 11.05.21 — 13:57
(26) Да руками
29 — 11.05.21 — 13:59
(28) Гений!
(9) Елка, однако, загнется… А в реке, озеро, море, океане — все живое умрет.
30 — 11.05.21 — 13:59
(0) ггггг. вызвать Записать
31 — 11.05.21 — 14:00
(3) а прикинь в документе возврата от покупателя тоже себестоимость хранится в явном виде в УТ11.
32 — 11.05.21 — 14:00
Встретились 2 одиночества…
33 — 11.05.21 — 14:02
(26) он — хозяин своей себестоимости!
34 — 11.05.21 — 14:03
(0) а если пользователь попросит хранить остатки товаров в документе тоже будите делать ?
35 — 11.05.21 — 14:04
Да черт с ней с себестоимостью не очень то и хотелось. Может кто-то толково объяснить почему так делать нельзя? Без метафор и угроз членовредительства?
36 — 11.05.21 — 14:05
(5) (35) а записывать зачем?
просто на форму или куда там тебе надо выводи
37 — 11.05.21 — 14:06
(31) Потому что в возврате есть возможность ручного распределения себестоимости, поэтому и запихнули в ТЧ.
38 — 11.05.21 — 14:06
(35) Почему нельзя через двойной сплошняк?
39 — 11.05.21 — 14:10
(35) потому что у тебя уже есть все, чтобы вывести себестоимость, дополнительно хранить в каком нибудь регистре/документе/справочнике нет смысла. Есть регистр с себестоимостью рассчитанной, бери из него циферку и выводи там где надо.
40 — 11.05.21 — 14:13
(35) Да можно. Просто Данные регистра и документа скорее всего будут отличаться.
41 — 11.05.21 — 14:13
(34) я в номенклатуре хранил остатки, было дело
42 — 11.05.21 — 14:16
(41) ну и как оно при каждом приходе/расходе перезаписывать карточки товара?
43 — 11.05.21 — 14:16
(41) Тебе можно.
44 — 11.05.21 — 14:23
(35) Попробую.
Это непонимание и игнорирование самой глубинной логики 1С — что есть константы, условно постоянные, справочники, в основном дописываемые, документы, использующие справочники, регистры, заполняемые документами, и отчёты, строящиеся по регистрам.
Если ты делаешь иначе — весь объём кода конфы, насущный и будущий, не учитывает твоих доделок и часто будет причиной расхождений. Одинаково названные показатели будут иметь разные значения, а это уже прямое нарушение принципов учёта и путь к беде.
45 — 11.05.21 — 14:25
(42) регламентным заданием. Использовал для печати ценников.
46 — 11.05.21 — 14:26
(44) если нельзя, но очень хочется, то можно. а так конечно, лучше в регистр сведений пихать
47 — 11.05.21 — 14:27
(45) А для печати ценников нельзя из регистра получать?
А вообще — гениально… Да…
48 — 11.05.21 — 14:27
(31) Когда ты говоришь, такое ощущение, что ты бредишь
49 — 11.05.21 — 14:28
(44) Это без метафор. Хотя, если отбросить вековой опыт предков, не-фига-не-понятно.
50 — 11.05.21 — 14:35
(35) > Похоже на какое-то религиозное табу.
Когда начинаешь ссать против ветра да так, что это и других зацепить может, то да — это легко превращается в табу.
1. Процесс записи документа записывает уже готовые данные. Если ты их в процессе меняешь — значит они еще не готовы и придется записывать еще раз. В итоге за нарушение концепции тебе придется заплатить неочевидной и нестандартной реализацией, которая в силу своей неочевидности легко может аукнуться при доработках. В общем случае ведь никто не ожидает и не закладывается на вариант, что документ может записываться дважды в разных режимах.
2. Ты хочешь одни и те же данные записывать в разные места. Для этого нужны веские основания. Так как в идеале нужно обеспечивать согласованность этих данных при любых раскладах. В твоем случае оснований явно недостаточно и обеспечить согласованность этих данных при любых раскладах ты тоже не сможешь. То есть это будет еще одна мина преемникам.
51 — 11.05.21 — 14:35
(47) можно, если СКД поменять. Но возникает трабла с обновлениями конфы. так надежно, как в калаше.
52 — 11.05.21 — 14:35
(50) так надо умело ссать, опыт приходит с мастерством
53 — 11.05.21 — 14:36
(50) давай обсудим пример с остатками для ценников.
54 — 11.05.21 — 14:36
хотя сейчас, конечно, я бы применил расширение, но тогда их не было, зато были подписки.
55 — 11.05.21 — 14:37
Коллеги. В глубинах России таковое сплошь и рядом. Т.н. «бизнесмен» (чаще всего пузатый мужчинка на ренжровере, в малиновом пиджаке на толстовку, и медной (реже золотой) цепью на шее) привык, что себестоимость — это цена закупки на черкизоне, плюс затраты на проезд и аренду склада. Все остальное он платит из своего кармана (чем постоянно упрекает всех сотрудников). Поэтому «бизнесмен» желает знать сколько себестоимость только что проданной шоколадки и сколько он может изъять из кассы.
56 — 11.05.21 — 14:39
(53) Давай. Что такое «остатки для ценников»? Озвучь задачу.
57 — 11.05.21 — 14:40
(56) мне больше интересно, на кой остатки на ценнике
58 — 11.05.21 — 14:41
(56) (57) Для ночной смены в «пятерочке». Остатки на чкладе. Цена остатка +10% распечатать ценники.
59 — 11.05.21 — 14:41
(55) Еще манагеры просто молятся на цифирку прибыли сразу после реализации.
60 — 11.05.21 — 14:43
(59) а толку то?) Если клиент денюжку не заплатил, то эта циферка ничего не значит)
61 — 11.05.21 — 14:44
(58) И какая проблема при этом возникает? Я все еще не улавливаю. Если нужно фиксировать результат, для «разбора полетов» — ну, фиксируй.
62 — 11.05.21 — 14:45
(57) молодой ты еще, незрелый. зачем там, не помню, но недавно вот просили остатки в разрезе размеров. Т.е. какие размеры остались (обувь)
63 — 11.05.21 — 14:48
Все не читал. Но Осуждаю именно такой подход как в (0).
Меняй задачу. Менять реквизит надо перез записью и точка!
64 — 11.05.21 — 14:58
(61) Что касается себестоимости. Постановка задачи кривая. Это я озвучил в (55). Т.е. заказчику необходимо видеть себестоимость продукта на данный момент времени. Принципиально, соорудить это можно, но это будет «сферический конь в вакууме». Проблемы возникнут максимум через 3 месяца, когда начнут сдавать отчет по прибыли.
Что касается ценников. Задача впринципе нормальная, особенно на продуктах питания, когда необходимо продать товар с заканчивающимся сроком годности. Т.е. выбрать таковые остатки, создать цены со скидкой и распечатать ценники.
65 — 11.05.21 — 15:01
(55) Бред. Это из глубинки ответ.
66 — 11.05.21 — 15:02
(0) Зачем записывать себестоимость в документ? «Пользователь хочет видеть себестоимость.» — это не ответ. Пользователь хочет видеть, ну так и выведите на форму эти данные, чтобы он их видел. Он их будет видеть. Задача будет решена.
Зачем ЗАПИСЫВАТЬ себестоимость в документ? Чем, какими соображениями, вы руководствуетесь при принятии такого технического решения?
67 — 11.05.21 — 15:03
(66) + 1
68 — 11.05.21 — 15:05
(64) вот кстати, когда я делал в последний раз печать размеров имеющихся в наличии, я расширением добавил замену $Размеры в макете на остатки. То бишь расширения это хорошо
69 — 11.05.21 — 15:06
(66) А может он умеет показывать только то, что в реквизитах?
70 — 11.05.21 — 15:06
(62) Надо быть видимо «очень» зрелым, чтобы пихать в Ценник остатки. Обычно в ценнике указана цена, наименование, упаковка, валюта, но не как не остаток. По поводу размеров обуви, какая проблема в этом? Заводится характеристика на размер и смотрятся остатки в разрезе характеристик, типовые это позволяют
71 — 11.05.21 — 15:08
(69) за 6 лет наверное можно научиться делать запросы к регистрам и выводить результат в реквизит формы.
72 — 11.05.21 — 15:10
(70) надо перезреть, подпортиться, подгнить, провонять…
73 — 11.05.21 — 15:15
(71) Это мы так думаем. А мой опыт говорит, что иногда ТАКОЕ бывает…
74 — 11.05.21 — 15:19
(69) Сегодня добавим «Себестоимость» в документ, а завтра пользователь, убедившись в том, что программист толковый, попросит вывести в документ ещё и остатки, чтобы девочкам было удобнее выписывать документы и не открывать каждый раз отчёт по остаткам:)
75 — 11.05.21 — 15:21
(74) Гы (с) Фиксин.
Уже лет 10 как пройденный этап у одного «ларечника».
76 — 11.05.21 — 15:26
(75) есть такие умельцы, для которых желание клиента — закон. И они начинают ломать весь типовой функционал, по каждой хотелке оператора. А потом этот зоопарк уже никто поддерживать не хочет
77 — 11.05.21 — 15:28
попадался один клиент у которого в карточке номенклатуры с десяток типов цен и все разными
реквизитами. цена1, цена2 и т.д. но я с ними работать не стал
78 — 11.05.21 — 15:37
тут еще дело в том, что в 1с методичка постоянно меняется. Например, в бух 1.6 в документе требование-накладная был реквизит себестоимость. А в бух 2.0 просто взяли и выбросили его. Пользователи на местах взвыли. Потому что все уже привыкли к этому. Вот поэтому возникла эта задача, вставить реквизит себестоимость, это не просто так, на пустом месте. Не просто же Гений это придумал.
79 — 11.05.21 — 15:37
Мне кажется тебе больше подойдет, добавить доп реквизит, а потом туда данные записывать
к примеру
&НаСервере
Процедура УстановитьДополнительныйРеквизитОбъекта(ДокументОбъект, ИмяРеквизита, ЗначениеРеквизита, ТаблицаСвойств)
ЭлПВХ_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту(«Имя»,ИмяРеквизита);
Если ЭлПВХ_Ссылка.Пустая() Тогда
Сообщить(«Не найден доп. реквизит «+ИмяРеквизита+», значение не установлено!»);
Возврат;
КонецЕсли;
СтрДопРеквизиты = ДокументОбъект.ДополнительныеРеквизиты.Найти(ЭлПВХ_Ссылка, «Свойство»);
НоваяСтрока = ТаблицаСвойств.Добавить();
НоваяСтрока.Свойство = ЭлПВХ_Ссылка;
НоваяСтрока.Значение = ЗначениеРеквизита;
КонецПроцедуры
А у себя после Записи с признаком ОбменДанными.Загрузка = Истина, только не забудь если документ самописный везде возврат при ОбменДанными.Загрузка сделать
ТаблицаСвойств = Новый ТаблицаЗначений;
ТаблицаСвойств.Колонки.Добавить(«Свойство»);
ТаблицаСвойств.Колонки.Добавить(«Значение»);
УстановитьДополнительныйРеквизитОбъекта(ЭтотОбъект,»Себестоимость»,Себестоимость,ТаблицаСвойств);
Этотобъект.Записать();
Это примерно все, но лучше как все говорят, записывай в регистр
80 — 11.05.21 — 15:52
(74) а потом будет вопрос «за что заплатил, а за что нет»
Mikeware
81 — 11.05.21 — 15:53
(78) переходят с одних веществ на другие — вот реквизиты и плывут…
Главная страница » Каталог » Программистам » 1С Предприятие 8 » Как изменить значение реквизита, при проведении документа?
Как изменить значение реквизита, при проведении документа?
Изменить значение реквизита, при проведении документа, можно следующим образом.
В Процедуре ПередЗаписью пишем такой код:
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не Проведен Тогда |
Вконтакте
Google+
Одноклассники
Мой мир
При проведении документа, изменить реквизит справочника
Автор zasidatel, 16 июн 2018, 14:49
0 Пользователей и 1 гость просматривают эту тему.
Как при проведении документа, изменить реквизит справочника ? нужно чтобы по реквизиту ТЧ в документе «ФИО» менялся в справочнике по строке где указан такое же «ФИО» реквизит «ПроживаетСейчас» который имеет тип Булево в значение Истина, помогите
Вот работает, но оно записывает в реквизит «ПроживаетСейчас» не по реквизиту «ФИО» , кто знает как сделать ?
Пример = ЭтотОбъект.Заезд.Найти("ФИО");
ФИО = Справочники.Клиенты.НайтиПоНаименованию(Пример);
ЭлементСправочника = ФИО.ПолучитьОбъект();
ЭлементСправочника.ПроживаетСейчас=Истина;
ЭлементСправочника.Записать();
Пример = ЭтотОбъект.Заезд.Найти("ФИО");
В строке ТЧ ФИО — это строка или таки ссылка на объект справочника Клиенты?
Для каждого СтрокаТЧ из Заезд Цикл
ОбъектКлиент = СтрокаТЧ.Клиент.ПолучитьОбъект();
ОбъектКлиент.ПроживаетСейчас = Истина;
ОбъектКлиент.Записать();
КонецЦикла;
Но это муть и делать так не надо. По рукам потом бить будут.
Делать надо через регистр сведений или свойствакатегории по ПВХ, а не дергать объекты при каждом проведении документа.
Цитата: AIFrame от 16 июн 2018, 15:13В строке ТЧ ФИО — это строка или таки ссылка на объект справочника Клиенты?
ФИО в документе имееет ссылку на объект справочника
Добавлено: 16 июн 2018, 15:16
Цитата: AIFrame от 16 июн 2018, 15:13
Пример = ЭтотОбъект.Заезд.Найти("ФИО");
В строке ТЧ ФИО — это строка или таки ссылка на объект справочника Клиенты?Для каждого СтрокаТЧ из Заезд Цикл
ОбъектКлиент = СтрокаТЧ.Клиент.ПолучитьОбъект();
ОбъектКлиент.ПроживаетСейчас = Истина;
ОбъектКлиент.Записать();
КонецЦикла;
Но это муть и делать так не надо. По рукам потом бить будут.
Делать надо через регистр сведений или свойствакатегории по ПВХ, а не дергать объекты при каждом проведении документа.
а как через регистр сделать ??) только начал работать с 1с(
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
При проведении документа, изменить реквизит справочника
Похожие темы (5)
Поиск
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей.
Google maps : вывод точек на карту и режим панорамы 8
В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута:
* Географические координаты объектов, которые хранятся в базе;
* Координаты начальной и коне
Посмотреть все результаты поиска похожих
-
В заказе покупателя есть реквизит «А». Он записывается при проведении заказа.
Как изменить его значение при проведении, скажем приходного ордера на основании? Скажите куда копать? -
Offline
gosn1ck
Опытный в 1С- Регистрация:
- 13 авг 2009
- Сообщения:
- 1.329
- Симпатии:
- 1
- Баллы:
- 26
вам надо заполнить реквизит на основании ордера?
тогда смотрите ОбработкаЗаполнения() -
Offline
yzek
Опытный в 1С- Регистрация:
- 13 окт 2010
- Сообщения:
- 713
- Симпатии:
- 1
- Баллы:
- 26
Примерно так.
Док = «ДокументОснование».ПолучитьОбъект();
Док.»А» = «бла-бла-бла»;
Док.Записать(); -
Offline
Siddy
Опытный в 1С- Регистрация:
- 18 мар 2009
- Сообщения:
- 311
- Симпатии:
- 0
- Баллы:
- 26
Вы хотите изменить реквизит заказа покупателя при проведении документа, введенного на его основании? Тогда в обработчике ПриЗаписи (или ПередЗаписью, в зависимости от ситуации) документа, введенного на основании
-
Да, спасибо! Я разобрался Это как раз то, что надо…
Только пока я разбирался, понял, что задача вообще в другомМне нужно как то получить сумму предоплаты по заказу при выводе списка заказов, при этом учесть все приходники, платежки поступившие, возвраты денег клиенту и корректировки заказа…
Сейчас сделана функция выбора из кучи этих доков по основанию, но это все тормозит жутко. Хотел как то при проведении каждого из доков менять доп. реквизит в заказе покупателя, но не получается, потому, что данные появляются после проведения, а не во время проведения…
Вобщем надо чето думать…
Поделиться этой страницей
&НаСервере
Процедура Изменение_значения_реквизита_объекта(ДокСсылка, Новое_значение_реквизита)// Процедура программно меняет значение реквизита объекта (документа)
// ДокСсылка — документ в котором необходимо изменить реквизит
// Новое_значение_реквизита — новое значение реквизита «Реквизит_для_корректировки»
// или так: ДокументССылка=Документы.ТТН.НайтиПоНомеру(СокрЛП(Ном),Дата(‘2021-05-16’));
Если Не ДокСсылка.Пустая() ТогдаДокОбъект=ДокСсылка.ПолучитьОбъект();
ДокОбъект.Реквизит_для_корректировки = Новое_значение_реквизита;
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
Попытка
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
Иначе
Сообщить(Новое_значение_реквизита+» не записано в «+ДокСсылка+«! Документ не определен»);
КонецЕсли
КонецПроцедуры