|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
dvrk 29.12.20 - 13:53 | Привет, просят сделать: если выбран склад 1 или 2 или 3 ил 4 или 5 тогда реквизит1(элемент справочника) нужно конкретный подставить
я хочу сделать так: в обработке перед записью склад1 = спрачоники.склады.найтипокоду(код) склад2 = спрачоники.склады.найтипокоду(код) склад3 = спрачоники.склады.найтипокоду(код) склад4 = спрачоники.склады.найтипокоду(код) склад5 = спрачоники.склады.найтипокоду(код) реквизит = справочники.справочник1.найтипокоду(код) в процедуре ПередЗаписью если этаформа.документобъект.склад = склад1 или .... тогда этаформа.документобъект.реквизит1 = реквизит конецесли или что то не учел ? | ||
Йохохо 1 - 29.12.20 - 13:56 | если "просят" то это надо в форме | ||
dvrk 2 - 29.12.20 - 13:57 | (1) я имел ввиду модуль формы "ПередЗаписью" | ||
del123 3 - 29.12.20 - 13:59 | А если будут просить каждый месяц по складу добавлять, каждый месяц переписывать будешь код? | ||
ДенисЧ 4 - 29.12.20 - 14:01 | (3) А тебе жалко? | ||
ДенисЧ 5 - 29.12.20 - 14:02 | (0) Сделай у склада реквизит и, если он заполнен - копируй его в документ. И лучше не перед записью, а при выборе склада | ||
del123 6 - 29.12.20 - 14:02 | (4) да мне то нет) | ||
dvrk 7 - 29.12.20 - 14:04 | (5) нельзя реквизит новый добавлять | ||
dvrk 8 - 29.12.20 - 14:05 | (5) делается это из-за того, что забывают Реквизит1 заполнить, заполнять его нужно только если выбраны конкретные склады | ||
dvrk 9 - 29.12.20 - 14:06 | (8) + склады известны и добавляться/убавляться их кол-во не будет | ||
ДенисЧ 10 - 29.12.20 - 14:07 | |||
mistеr 11 - 29.12.20 - 14:08 | |||
dvrk 12 - 29.12.20 - 14:09 | |||
mistеr 13 - 29.12.20 - 14:21 | (12) Проверка это если Реквизит1 не заполнен, то не давать проводить. | ||
dvrk 14 - 29.12.20 - 14:21 | (13) его не всегда нужно заполнять.. | ||
dvrk 15 - 29.12.20 - 14:23 | (13) Если склад = (склады из моего списка) тогда нужно заполнить реквизит1 конкретным значением, в остальных случаях не нужна проверка | ||
dvrk 16 - 29.12.20 - 14:30 | Я просто спрашиваю правильно ли я в (0) написал или можно как то красивее без найтипокоду тыщу раз ? | ||
ДенисЧ 17 - 29.12.20 - 14:31 | |||
dvrk 18 - 29.12.20 - 14:33 | (17) лан, поищу доп свойства, спасибо | ||
dvrk 19 - 29.12.20 - 14:55 | Ммм, доп свойства я нашел, а как к нему обратиться програмно?
Ну т.е. я хочу что-то типа Если склад.допсвойство = моёсвойство тогда реквизит = нужныйэлементсправочника конеццикла | ||
dvrk 20 - 29.12.20 - 14:58 | Ну т.е. не допсвойство а РС Значения свойств объектов | ||
dvrk 21 - 29.12.20 - 15:10 | Или это запросом склады получить надо ? | ||
ДенисЧ 22 - 29.12.20 - 15:12 | выбрать значение
из регистрСведений.ЗначенияСвойствОбъектов
где объект = &склад
и свойство = &НужноеСвойствоРеквизитДокументаДляСклада
И уже из запроса читай.
Или, если хочешь какашкокода - создай набор записей, задай ему отборы, прочитай... | ||
dvrk 23 - 29.12.20 - 15:16 | (22) спасибо! | ||
hhhh 24 - 29.12.20 - 15:33 | "спрачоники" - это что? | ||
dvrk 25 - 30.12.20 - 06:34 | (24) справочники ) | ||
dvrk 26 - 30.12.20 - 08:58 | Вопрос ещё, я сделал "ПередЗаписью" проверку, теперь, если склад из моего списка, то реквизит заполняется, а как сделать чтобы если склад поменяли на не из списка, то очищалось, но если сами реквизит заполнили, то не очищалось | ||
ДенисЧ 27 - 30.12.20 - 08:59 | (26) Проверку поставить Индира не позволяет? | ||
dvrk 28 - 30.12.20 - 08:59 | (27) я не совсем понимаю как | ||
dvrk 29 - 30.12.20 - 09:00 | (27) ну т.е. я поставлю проверку если НЕ нужный склад, то очистить реквизит, но если они выберут другой склад сами, то очистится же | ||
dvrk 30 - 30.12.20 - 09:01 | (29) т.е. выбрали склад не из списка, заполнили реквизит, а он из-за проверки очистится Рекламное место пустует | ||
dvrk 31 - 30.12.20 - 09:03 | Ааа, всё, туплю, спасибо | ||
Ёпрст 32 - 30.12.20 - 09:23 | (26) делай это не при записи а в ПриИзменении реквизита склад | ||
ДенисЧ 33 - 30.12.20 - 09:27 | |||
dvrk 34 - 30.12.20 - 09:41 | |||
ДенисЧ 35 - 30.12.20 - 09:41 | (34) пот! | ||
dvrk 36 - 30.12.20 - 09:49 | Ну я то сделаю, просто не понимаю почему так лучше | ||
dvrk 37 - 31.12.20 - 10:31 | Извиняюсь, ещё вопрос, я неверно что-то делаю? Получил в запросе нужные склады
выгрузил затем обхожу таблицу и сравниваю значение склада на форме с результатом запроса чего то я видимо не понимаю и неверно сделал | ||
dvrk 38 - 31.12.20 - 10:32 | Результат = Запрос.Выполнить().Выгрузить(); Для каждого МоиСклады из Результат цикл Если ЭтаФорма.ДокументОбъект.Склад = МоиСклады.Объект Тогда ЭтаФорма.ДокументОбъект.Реквизит1 = РеквизитНайденныйМоКоду КонецЕсли; КонецЦикла; | ||
Ёпрст 39 - 31.12.20 - 10:32 | (37) больше кода | ||
dvrk 40 - 31.12.20 - 10:32 | Как это срабатывает?
Если ЭтаФорма.ДокументОбъект.Склад = МоиСклады.Объект как сравнивает склад, там же не 1, который выбран на форме, а список складов | ||
dvrk 41 - 31.12.20 - 10:33 | (39) да это весь код, до него запрос только | ||
dvrk 42 - 31.12.20 - 10:34 | (39) в Результат у меня 9 складов | ||
Ёпрст 43 - 31.12.20 - 10:34 | |||
dvrk 44 - 31.12.20 - 10:34 | (43) это обычные формы
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Объект КАК Объект
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство.Наименование = ""ТестовоеСвойство"""; | ||
dvrk 45 - 31.12.20 - 10:39 | У меня наверное больше вопрос как он сравнивает склады в Для каждого и в Если
Ну т.е. он сравнивает пока не обойдёт всю таблицу и если в таблице условие выполняется, то заполняет мой реквизит, верно ? | ||
Ёпрст 46 - 31.12.20 - 10:43 | (44) На вот, занимайся Процедура СкладПриИзменении(Элемент) Если Не ЗначениеЗаполнено(Склад) Тогда ТвойРеквизит = Неопределено; Возврат; КонецЕсли; Запрос = Новый Запрос(" |ВЫБРАТЬ | СвойствоСклада.Значение КАК ТвойРеквизит, | ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК СвойствоСклада | ГДЕ | СвойствоСклада.Объект = &Склад | И СвойствоСклада.Свойство = &ТвоёСвойство"); Запрос.УстановитьПараметр("ТвоёСвойство",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("ТвоёНаименованиеСвойства")); Запрос.УстановитьПараметр("Склад",Склад); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ТвойРеквизит = Выборка.ТвойРеквизит; КонецЕсли; КонецПроцедуры | ||
ДенисЧ 47 - 31.12.20 - 10:43 | (45) Хочешь продам тебе неэкселюзивное право использовать оператор Прервать в цикле?
Недорого, 10евро в месяц... | ||
Ёпрст 48 - 31.12.20 - 10:44 | Ну а твой код - в топку. | ||
dvrk 49 - 31.12.20 - 10:46 | Да я учусь, чо вы...
спасибо |
|
Список тем форума |