Имя: Пароль:
1C
1C 7.7
v7: Перезаписать все элементы справочника.
,
0 progaoff
 
14.11.18
15:57
Процедура Сформировать()
Спр = СоздатьОбъект("Справочник.БП_ДоговорыСервисногоОбслуживания");
Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
        Если Спр.ЭтоГруппа()=0 Тогда
            Состояние("Обработка "+ Спр.НомерДоговора);
            Спр.Записать();
        КонецЕсли;
    КонецЦикла;    
КонецПроцедуры
В процедуре ПриЗаписи добавил необходимую обработку.
Теперь хочу перезаписать все элементы, но в выборку попадает совсем не то количество элементов. И еще вопрос, сработает ли ПриЗаписи?
1 progaoff
 
14.11.18
15:58
(0) В чем может быть косяк с выборкой элементов?
2 Базис
 
naïve
14.11.18
15:59
При записи у тебя сбивается выборка. Сперва в ТЗ кинь и оттуда выбирай, или по порядку кодов/наименований, но тут проверять надо.
3 azernot
 
14.11.18
16:00
(0) ПриЗаписи() в форме? Конечно не сработает.
4 1Сергей
 
14.11.18
16:02
смотри параметры ВыбратьЭлементы и ПолучитьЭлемент
5 Ёпрст
 
14.11.18
16:03
(0)
>>>но в выборку попадает совсем не то количество элементов
поди справочник подчиненный
6 Эльниньо
 
14.11.18
16:03
Обр-ка меняет Наименование. Я угадал?
7 Ёпрст
 
14.11.18
16:03
(2) при записи выборка не сбивается
8 progaoff
 
14.11.18
16:05
(6) нет, реквизит заполняет из части реквизита другого реквизита.
9 Эльниньо
 
14.11.18
16:10
(8) Что значит "совсем не то количество элементов"? Как узнал, что совсем не то?
10 progaoff
 
14.11.18
16:11
(9) Да их там больше 3К а выбирает за 5 секунд.
11 progaoff
 
14.11.18
16:11
(5) Не похоже на подчинённый справочник
12 Ёпрст
 
14.11.18
16:12
см 5, затем 4
13 ptiz
 
14.11.18
16:17
Иерархический наверняка.
14 ptiz
 
14.11.18
16:17
Собственно, видно по коду
15 progaoff
 
14.11.18
16:17
(12) Без учета иерархии и с учетом иерархии - тоже самое.
16 Масянька
 
14.11.18
16:18
(15) ПорядокКодов не пробовал?
17 Масянька
 
14.11.18
16:20
(15) И это - ты по сообщить считаешь, что выборка меньше?
18 Ёпрст
 
14.11.18
16:20
Видать, не тот справочник обрабатывает, инфа 100%
19 progaoff
 
14.11.18
16:21
(18) ага) я уже это понимаю, только не пойму с какого ф...а.
20 ptiz
 
14.11.18
16:21
ВыбратьЭлементы(<?>)
Синтаксис:
ВыбратьЭлементы(<Режим>)
Назначение:
Открыть выборку элементов справочника.
Возвращает: 1 - если действие выполнено и в выборке есть хотя бы один элемент;
0 - если действие не выполнено или в выборке нет ни одного элемента.
Параметры:
<Режим> - как выбирать:
1 - выбирать элементы с учетом иерархии,
0 - выбирать элементы без учета иерархии (необязателен, по умолчанию - 1).
21 progaoff
 
14.11.18
16:26
(20) это понятно
22 progaoff
 
14.11.18
16:35
(18) Состояние("Обработка "+ Спр.НомерДоговора);
Даже не те номера показывает.
23 Ёпрст
 
14.11.18
16:37
(22) обрабатываешь не тот ВИД справочника, открой ужо пофигуратор
24 Карст
 
14.11.18
16:38
запросом - запрос выгрузить в ТЗ - обход ТЗ и меняй чо хошь
25 DmitriyDI
 
14.11.18
16:38
(22) не понятно, где находятся "те номера"? возможно просто надо обрабатывать другой справочник, а не "БП_ДоговорыСервисногоОбслуживания", код в (0) рабочий.
26 progaoff
 
14.11.18
16:44
(25) Выловил.
27 Масянька
 
14.11.18
16:44
(26) Колись... Общественность ждет.
28 progaoff
 
14.11.18
16:51
Состояние("Обработка "+ Спр.НомерДоговора); Состояние - вообще не то что нужно.
+ форма списка с элементами этого справочника, имеет порядка 7 фильтров) вот я и не видел договоров всех
29 Масянька
 
14.11.18
17:12
(28) А где в (0) фильтры?
30 progaoff
 
14.11.18
17:29
(29) я искал по номеру договора, в форме списка, которая отфильтрована была, а так все норм, теперь бы придумать как инн перезаписать, так как ПриЗаписи не срабатывает.
31 Builder
 
14.11.18
17:38
(30) Че тут думать то...
Спр.ИНН = НовыйИНН;
Спр.Записать();
32 progaoff
 
14.11.18
17:47
(31)все было бы здорово, но нужно отделить ип от ООО, так как инн разный по количеству цифр, а рукожопые менеджеры делали запись в поле инн - инн/кпп, вот мне и нужно то что до слеша отделить.
33 azernot
 
14.11.18
18:03
(32) Стандартная для 1С Бух 77 ситуация, когда ИНН/КПП в одном поле.
34 progaoff
 
14.11.18
18:11
(33) У меня в полном наименовании контрагента идут первыми символами ИП и ООО, вот пытаюсь сравнить.
35 azernot
 
14.11.18
18:12
(34) Зачем? Ищешь слэш в ИНН, если до слэша 12 символов - это ИП, если 10 - это не ИП.
36 progaoff
 
14.11.18
18:17
(35) может быть / а может и \
37 azernot
 
14.11.18
18:19
(36) А ну всё, проблема нерешаема :)
38 azernot
 
14.11.18
18:19
Если ПустоеЗначение(ИНН) = 1 Тогда
        
    ИначеЕсли Найти(ИНН,"\")> 0 Тогда
        КПП = Прав(ИНН,СтрДлина(ИНН)-Найти(ИНН,"\"));
        ИНН = Лев(ИНН,Найти(ИНН,"\")-1);
    ИначеЕсли Найти(ИНН,"/")> 0 Тогда
        КПП = Прав(ИНН,СтрДлина(ИНН)-Найти(ИНН,"/"));
        ИНН = Лев(ИНН,Найти(ИНН,"/")-1);
    КонецЕсли;
39 progaoff
 
14.11.18
18:24
СтрокаИП = "ИП";
СтрокаООО = "ООО";
    Пока Спр.ПолучитьЭлемент(0) = 1 Цикл
        СтрокаДляСравнения = Лев(Спр.Контрагент.ПолнНаименование,3);    
        Если Спр.ЭтоГруппа()=0 Тогда
        
        
        Если СтрокаДляСравнения = СтрокаИП  Тогда
            Спр.ИНН =  Лев(Спр.Контрагент.ИНН,12)
        
        ИначеЕсли  СтрокаДляСравнения = СтрокаООО Тогда
            Спр.ИНН =  Лев(Спр.Контрагент.ИНН,10)
        КонецЕсли;    
            Сообщить("Обработка "+ Спр.ИНН);
            Спр.Записать();
            
        КонецЕсли;
    КонецЦикла;    
КонецПроцедуры
40 progaoff
 
14.11.18
18:26
(39) Хрень?
41 azernot
 
14.11.18
18:27
(39) дай угадаю, в базе не окажется ни одного ИП-ника? ;)

Лев(Спр.Контрагент.ПолнНаименование,3) всегда будет не равно "ИП"

А что ты будешь делать, например с ОАО "Газпром"? Или ЗАО "Василёк"?
42 progaoff
 
14.11.18
18:28
(41) да:)
43 progaoff
 
14.11.18
18:28
(41) Нет таких, проверял
44 progaoff
 
14.11.18
18:29
(41) все, решено)