Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УТ 10, заполнение реквизита

УТ 10, заполнение реквизита
Я
   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
(7) Допсвойство склада...
У ут10 вроде свойства к складу можно ...
   mistеr
 
11 - 29.12.20 - 14:08
(8) Ну так сделай проверку.
Ну и при изменении склада можно заполнять.
   dvrk
 
12 - 29.12.20 - 14:09
(11) а в (0) не проверка ?
   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
(16) Правильней будет как в (5) или (10)
   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
(32) Я ему ещё в (5) это сказал... Но это, похоже, житель дальнего севера...
   dvrk
 
34 - 30.12.20 - 09:41
(32) (33) поч?
   ДенисЧ
 
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
(38)
1.покажи запрос
2. это обычные формы или УФ ?
   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
Да я учусь, чо вы...
спасибо


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.