Имя: Пароль:
1C
1С v8
Выбор номенклатуры в документ. Как предотвратить дубли?
0 Mikhail Volkov
 
25.11.19
13:28
Как предотвратить дубли номенклатуры на этапе заполнения документа? Есть типовое решение?
1 ДенисЧ
 
25.11.19
13:30
Да. Ловить событие выбора и искать в ТЧ. Если есть - давать отлуп.
2 HиK128
 
25.11.19
13:31
(0) это неправильно! пользователю нужно давать возможность вводить дубли, бывают цены отличаются.
надо "схлопывать" потом, на этапе дальнейшей обработки.
3 Mikhail Volkov
 
25.11.19
13:36
(1) Документ не записан, на этапе заполнения документа?
(2) Ну хотя бы предупредить пользователя...
4 shuhard
 
25.11.19
13:40
(3) топик ни о чем
есть перед записью документа, есть события табличной части формы
5 HиK128
 
25.11.19
13:42
(3) используй ОбработкаПроверкиЗаполнения в модуле объекта - срабатывает во время проведения, в момент проведения и предупредишь.
6 piter3
 
25.11.19
13:44
А документ причем если бардак уже в ном-ре?Боритесь с причиной
7 Mikhail Volkov
 
25.11.19
13:50
(5) Желательно до записи, на этапе заполнения документа.
(6) Дубль - одна и та же номенклатура...
8 Ёпрст
 
25.11.19
13:52
(7) И ? я хочу 2 позиции продать по одной цене и одну по другой, нельзя, что ле ?
9 piter3
 
25.11.19
13:54
(7) А характеристик, серий у тебя нет?
10 Mikhail Volkov
 
25.11.19
14:01
(8) (9) В данном случае нет, далее в стоке потребуется вводить документ поступления этой номенклатуры.
Типового решения видимо нет. Тогда как получить список уже введенной номенклатуры в форму (обычные, не УФ)?
11 vdss
 
25.11.19
14:04
Товары.ВыгрузитьКолонку("Номенклатура")
12 Ёпрст
 
25.11.19
14:15
(10) Ну, перед записью, делай тогда Товары.Свернуть(<перечень конлонок>,"Количество,Сумма") далее проставляй цену и ндс..
13 Ёпрст
 
25.11.19
14:15
и.. усё.
14 Mikhail Volkov
 
25.11.19
14:16
(11) Из формы?
15 Mikhail Volkov
 
25.11.19
17:07
(11) Как-то так:
    СписокВведеннойНоменклатуры = Услуги.ВыгрузитьКолонку("Номенклатура");
    Если ЗначениеЗаполнено(Номенклатура) И СписокВведеннойНоменклатуры.Найти(Номенклатура) = СписокВведеннойНоменклатуры.Количество() - 1 Тогда
        :
        :
    Иначе
        ТекстВопроса = "Номенклатура" + ?(ЗначениеЗаполнено(Номенклатура), ": '" + СокрЛП(Номенклатура) + "' уже введена.", " не определена.");
    КонецЕсли;
16 mistеr
 
25.11.19
18:42
(10) Посмотри что ли обработку подбора в типовых на ОФ.
17 Сияющий в темноте
 
25.11.19
18:45
пользователю на этапе подбора сказать,что это дубль.
тут еще вопрос в том,что даже если мы схлопываем строки нужно не забыть просуммировать количество.
18 pechkin
 
25.11.19
18:50
(8) это называется скидка. зачем давать скидку на 1 позицию, когда можно дать туже скидку на все количество товара?
19 Mikhail Volkov
 
26.11.19
08:25
(17) Никаких схлопываний! Речь об услугах сторонней организации в заказ-нарядах.
Метод УслугиНоменклатураПриИзменении (15) контролирует дубли номенклатуры только в последней строке. А если пользователь вздумает изменить номенклатуру не в последней строке, то этот метод не годится.
Если бы СписокВведеннойНоменклатуры сформировать в обработчике УслугиНоменклатураНачалоВыбора, и передать в обработчик УслугиНоменклатураПриИзменении... Возможно?
20 Kigo_Kigo
 
26.11.19
08:46
я понимаю что меня сча тут шапками закидают, но приИзменении тупо перебрать ТЧ и сравнить с выбранной номенклатурой, религия не позволяет?
21 Сияющий в темноте
 
26.11.19
08:55
(19)я вот о чем:
пользователь выбрал номенклатуру А
потом поработал,а потгм снова выбрал номенклатуру А.
если он по факту вводит приход или расход,то это вполне понятная ситуация и нужно или схлопывать или делать новую строку,если цена другая.
если же ваодится уникальная услуга У,то нужно пользователю сказать,что она уже была,так как у этой услуги количество больше единицы быть не может.
22 Сияющий в темноте
 
26.11.19
08:56
(20)он,видимо,хочет в форме подбора это видеть.
23 Масянька
 
26.11.19
08:59
(16) +100500.
Кстати, очень часто пользователи просят именно дубли. А не суммирование кол-ва.
24 Mikhail Volkov
 
26.11.19
15:19
(20) Громоздко, надеялся что попроще...
25 Йохохо
 
26.11.19
15:41
(24) подбор ищет первую строку по отбору и делает +1. Судя по (19) надо просто кинуть в юзера ошибкой, там тоже многа буков
Программист всегда исправляет последнюю ошибку.