Как при проведении документа изменить реквизит. |
Я |
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+
Одноклассники
Мой мир
Как измени реквизит справочника при проведении документа
Автор Gendelf, 18 ноя 2013, 17:27
0 Пользователей и 1 гость просматривают эту тему.
Добрый день. В документе ПоступлениеКниги, при проведении, нужно прописать кусок кода который будет менять реквизит справочника Книга (реквизит Состояние). Проблеммы с сылкой к реквизиту справочника… как до него добраться, я не знаю.
Вот что получилось, конечно же не работает.
PS ТЧКнига — табчасть документа, в ней реквизит Книга с ссылкой к справочнику Книга.
//Смена состояния книги
Для каждого СтрокаТЧ Из ТЧКнига Цикл
ТЧКнига.Книга.Состояние = Перечисления.СостояниеКниги.ВНаличии;
КонецЦикла;
Логика приведёт вас от А к В. Воображение доставит вас куда угодно.
Сайт про аквариум, аквариумные рыбки и аквариумные растения http://myaquainfo.ru/
СтрокаТЧ.Книга.Состояние = Перечисления.СостояниеКниги.ВНаличии;
Логика приведёт вас от А к В. Воображение доставит вас куда угодно.
Сайт про аквариум, аквариумные рыбки и аквариумные растения http://myaquainfo.ru/
//Смена состояния книги
Для каждого СтрокаТЧ Из ТЧКнига Цикл
Если ЗначениеЗаполнено(ТЧКнига.Книга)
СпрОбъект = ТЧКнига.Книга.ПолучитьОбъект();
СпрОбъект.Состояние = Перечисления.СостояниеКниги.ВНаличии;
СпрОбъект.Записать();
КонецЦикла;
При
Для каждого СтрокаТЧ Из ТЧКнига Цикл
Если ЗначениеЗаполнено(ТЧКнига.Книга) Тогда
СпрОбъект = ТЧКнига.Книга.ПолучитьОбъект();
СпрОбъект.Состояние = Перечисления.СостояниеКниги.ВНаличии;
СпрОбъект.Записать();
КонецЕсли;
КонецЦикла;
Поле объекта не обнаружено (Книга)
ругается на Если….
Логика приведёт вас от А к В. Воображение доставит вас куда угодно.
Сайт про аквариум, аквариумные рыбки и аквариумные растения http://myaquainfo.ru/
Найди его в справочнике и сделай следующее
//Начало твоего цикла
//то, что ты написал
ТекущаяКнига = ТЧКнига.Книга.Ссылка; //получил ссылку на объект
ТекущаяКнига.Состояние = Перечисления.СостояниеКниги.ВНаличии;// присвоил значение реквизиту
ТекущаяКнига.Записать(); // записал элемент
//конецтвоего цикла
Добавлено: 18 ноя 2013, 17:38
Цитата: Gendelf от 18 ноя 2013, 17:34
ПриДля каждого СтрокаТЧ Из ТЧКнига Цикл
Если ЗначениеЗаполнено(ТЧКнига.Книга) Тогда
СпрОбъект = ТЧКнига.Книга.ПолучитьОбъект();
СпрОбъект.Состояние = Перечисления.СостояниеКниги.ВНаличии;
СпрОбъект.Записать();
КонецЕсли;
КонецЦикла;Поле объекта не обнаружено (Книга)
ругается на Если….
А с чего ты или точнее как ты собираешь ТЧКнигу?
Правильно ведите учет или пишите программы и вам воздастся!…
(Кстати — кнопочку Сказать Спасибо — никто не отменял)
Прошу прощения ступил
//Смена состояния книги
Для каждого СтрокаТЧ Из ТЧКнига Цикл
Если ЗначениеЗаполнено(СтрокаТЧ.Книга) Тогда
СпрОбъект = СтрокаТЧ.Книга.ПолучитьОбъект();
СпрОбъект.Состояние = Перечисления.СостояниеКниги.ВНаличии;
СпрОбъект.Записать();
КонецЕсли;
КонецЦикла;
//Начало твоего цикла
//то, что ты написал
ТекущаяКнига = СтрокаТЧ.Книга.Ссылка; //получил ссылку на объект // и я ступил — понедельник день тяжелый!!
ТекущаяКнига.Состояние = Перечисления.СостояниеКниги.ВНаличии;// присвоил значение реквизиту
ТекущаяКнига.Записать(); // записал элемент
//конецтвоего цикла
Правильно ведите учет или пишите программы и вам воздастся!…
(Кстати — кнопочку Сказать Спасибо — никто не отменял)
ребят, вы меня запутали… как должен выглядить код?
Добавлено: 18 ноя 2013, 18:12
Для каждого СтрокаТЧ Из ТЧКнига Цикл
Если ЗначениеЗаполнено(ТЧКнига.Книга) Тогда
ТекущаяКнига = СтрокаТЧ.Книга.Ссылка; //получил ссылку на объект // и я ступил - понедельник день тяжелый!!
ТекущаяКнига.Состояние = Перечисления.СостояниеКниги.ВНаличии;// присвоил значение реквизиту
ТекущаяКнига.Записать(); // записал элемент
КонецЕсли;
КонецЦикла;
так вроде?
Добавлено: 18 ноя 2013, 18:15
Поле объекта не обнаружено (Книга)
на 2 строке…
ужас, как сложно то.
Логика приведёт вас от А к В. Воображение доставит вас куда угодно.
Сайт про аквариум, аквариумные рыбки и аквариумные растения http://myaquainfo.ru/
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. Исходные данные для построения маршрута:
* Географические координаты объектов, которые хранятся в базе;
* Координаты начальной и коне
Посмотреть все результаты поиска похожих
&НаСервере
Процедура Изменение_значения_реквизита_объекта(ДокСсылка, Новое_значение_реквизита)// Процедура программно меняет значение реквизита объекта (документа)
// ДокСсылка — документ в котором необходимо изменить реквизит
// Новое_значение_реквизита — новое значение реквизита «Реквизит_для_корректировки»
// или так: ДокументССылка=Документы.ТТН.НайтиПоНомеру(СокрЛП(Ном),Дата(‘2021-05-16’));
Если Не ДокСсылка.Пустая() ТогдаДокОбъект=ДокСсылка.ПолучитьОбъект();
ДокОбъект.Реквизит_для_корректировки = Новое_значение_реквизита;
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
Попытка
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
Иначе
Сообщить(Новое_значение_реквизита+» не записано в «+ДокСсылка+«! Документ не определен»);
КонецЕсли
КонецПроцедуры
Пытаюсь делать учет по ячеечным складам. В документе есть табличная часть «МестаХранения». В обработке проведения подбираю свободне на складе места хранения и провожу приход по ним, подобраные места хранения записываю в табличную часть документа. В результате после «первого» проведения документ оказывается модифицированным и 1С спрашивает, сохранить ли эти изменения, если ответить «Да», то происходит «второе» проведение. Что-то мне это не нравится. Посоветуйте, как правильнее обработать эту ситуацию?
метод Записать смотри и его параметры
после присвоения реквизитов делаю ЭтотОбъект.Записать(РежимЗаписиДокумента.Запись); все равно еще раз спрашивает «Документ был изменен … »
Проверяй модифицированность и в ПередЗакрытием СтандартнаяОбработка = Ложь
кстати сейчас люди посоветовали посмотреть события ПриОткрытии, ПриЗакрытии и ПриЗаписи — может в них чего-то не так и точно, блин! В ПриЗаписи была строка вот из-за неё эта хрень
Обычно такие вещи (СуммаДокумента = Номенклатура.Итог(«СуммаСНДС»)) ставят в ПередЗаписью, а не в ПриЗаписи. Туда же можно поместить и определение размещения. Единственно, мне представляется неверным автоматом определять ячейки для товаров. Ведь такое определение должно отразить факт реального размещения. Куда реально положат товар зависит от ряда обстоятельств. Может быть более верно размещать товар в предопределенную ячейку склада, условно «Зона приема», а потом уж кладовщики его разместят и оформят соответствующий документ?
а ты подумал над ситуацией, что будет если перепровести документ через недельку
Тэги:
Комментарии доступны только авторизированным пользователям
Изменение реквизит справочника при проведении документа в 1С
От: |
tiamatinc |
||
Дата: | 27.05.06 11:08 | ||
Оценка: |
Подскажите, пожалуйста каким образом можно выполнить данное действие, пытаюсь написать вот так
Процедура ОбработкаПроведения()
СпрКаталог = СоздатьОбъект("Справочник.Подмена");
СпрКаталог.НайтиЭлемент(Тело);
СпрКаталог.УстановитьАтрибут("Клиент",Клиент);
КонецПроцедуры
Вроде всё работает, но последняя строка словно не выполняется , типы реквизитов совпадают.
Re: Изменение реквизит справочника при проведении документа
От: |
dreamZ |
||
Дата: | 29.05.06 05:01 | ||
Оценка: |
Думаю,вы не поставили галочку в реквизите справочника «Изменяется документами»… и еще,в док. существует функция УстановитьРеквизитСправочника(<ЭлементСправочника>,<НазваниеРеквизита>,<Значение>,<ДатаУстановки>,<ИмяТипа>,<Длина>,<Точность>)
может она вам больше поможет
Re: Изменение реквизит справочника при проведении документа
От: |
dreamZ |
||
Дата: | 29.05.06 05:05 | ||
Оценка: |
Здравствуйте, tiamatinc, Вы писали:
T>Подскажите, пожалуйста каким образом можно выполнить данное действие, пытаюсь написать вот так
T>
T>Процедура ОбработкаПроведения()
T> СпрКаталог = СоздатьОбъект("Справочник.Подмена");
T> СпрКаталог.НайтиЭлемент(Тело);
T> СпрКаталог.УстановитьАтрибут("Клиент",Клиент);
T>КонецПроцедуры
T>
T>Вроде всё работает, но последняя строка словно не выполняется , типы реквизитов совпадают.
Думаю, у вас не стоит галочка в реквизите справочника «изменяеться документами»… так же есть фун. в док. УстановитьРеквизитСправочника(<ЭлементСправочника>,<НазваниеРеквизита>,<Значение>,<ДатаУстановки>,<ИмяТипа>,<Длина>,<Точность>)
может она вам поможет…
Re: Изменение реквизит справочника при проведении документа
От: |
OLEGus1
|
||
Дата: | 29.05.06 05:49 | ||
Оценка: |
Здравствуйте, tiamatinc, Вы писали:
T>Подскажите, пожалуйста каким образом можно выполнить данное действие, пытаюсь написать вот так
T>
T>Процедура ОбработкаПроведения()
T> СпрКаталог = СоздатьОбъект("Справочник.Подмена");
T> СпрКаталог.НайтиЭлемент(Тело);
T> СпрКаталог.УстановитьАтрибут("Клиент",Клиент);
T>КонецПроцедуры
T>
T>Вроде всё работает, но последняя строка словно не выполняется , типы реквизитов совпадают.
А что за переменная «Клиент»?
Crescite, nos qui vivimus, multiplicamini
Re: Изменение реквизит справочника при проведении документа
От: |
Red Bird
|
||
Дата: | 29.05.06 06:35 | ||
Оценка: |
Здравствуйте, tiamatinc, Вы писали:
[skip]
T>Вроде всё работает, но последняя строка словно не выполняется , типы реквизитов совпадают.
Все проще!
1. Если реквизит «Клиент» непериодический, то нужно применить метод Записать:
Процедура ОбработкаПроведения()
СпрКаталог = СоздатьОбъект("Справочник.Подмена");
СпрКаталог.НайтиЭлемент(Тело);
СпрКаталог.УстановитьАтрибут("Клиент",Клиент);
СпрКаталог.Записать();
КонецПроцедуры
2. Если реквизит периодический, то тогда:
Процедура ОбработкаПроведения()
УстановитьРеквизитСправочника(Тело,"Клиент",Клиент, ДатаДок);
КонецПроцедуры
P.S. 1-й вариант очень плохое решение, т.к. не рекомендуется изменять реквизит справочника при проведении документа
(возможно появление больших проблем /у пользователя/ при эексплуатации конфингурации).
Re[2]: Изменение реквизит справочника при проведении докумен
От: |
tiamatinc |
||
Дата: | 29.05.06 11:27 | ||
Оценка: |
Здравствуйте, Red Bird, Вы писали:
RB>P.S. 1-й вариант очень плохое решение, т.к. не рекомендуется изменять реквизит справочника при проведении документа
RB> (возможно появление больших проблем /у пользователя/ при эексплуатации конфингурации).
Большое спасибо, помогло . А по поводу плохого решения, то оно так и было задумано
Re[3]: Изменение реквизит справочника при проведении докумен
От: |
Red Bird
|
||
Дата: | 29.05.06 12:07 | ||
Оценка: |
Здравствуйте, tiamatinc, Вы писали:
T>Здравствуйте, Red Bird, Вы писали:
RB>>P.S. 1-й вариант очень плохое решение, т.к. не рекомендуется изменять реквизит справочника при проведении документа
RB>> (возможно появление больших проблем /у пользователя/ при эексплуатации конфингурации).
T>Большое спасибо, помогло . А по поводу плохого решения, то оно так и было задумано
Тогда вы должны продумать, что будет когда пользователь сделает отмену проведения:
Процедура ОбработкаУдаленияПроведения()
//Вернуть ИБ в состояние до проведния документа
КонецПроцедуры
- Переместить
- Удалить
- Выделить ветку
Пока на собственное сообщение не было ответов, его можно удалить.