Имя: Пароль:
1C
1С v8
Удаление РегистрыНакопления.ТоварыВРезервеНаСкладах
0 neo-55555
 
23.01.15
00:33
Доброй ночи, друзья. Помогите, пожалуйста. Нужно удалить в регистре накопления - Товары в резервах на складах, те документы у которых документ резерва ПУСТОЙ

Написал обработку, не понимаю что нужно вставить в регистратор для такого отбора

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    *
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();

Пока Выборка.Следующий() Цикл
    
    
НаборЗаписей.Отбор.Регистратор.Установить(
    


НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();


КонецЦикла;
КонецПроцедуры
1 GreatOne
 
23.01.15
00:47

РегистрНакопленияМенеджер.<Имя регистра накопления> (AccumulationRegisterManager.<Имя регистра накопления>)
Выбрать (Select)
Синтаксис:

Выбрать(<НачалоИнтервала>, <КонецИнтервала>, <Отбор>, <Порядок>)
Параметры:

<НачалоИнтервала> (необязательный)

Тип: Дата; МоментВремени; Граница.
Начало интервала, за который будут выбираться записи регистра накопления. Может задаваться значениями типа Дата, МоментВремени или Граница.
Если не указан, то будут выбираться записи с самого ранней включительно.
<КонецИнтервала> (необязательный)

Тип: Дата; МоментВремени; Граница.
Конец интервала, за который будут выбираться записи регистра накопления. Может задаваться значениями типа Дата, МоментВремени или Граница.
Если не указан, то будут выбираться записи до самой поздней включительно.
<Отбор> (необязательный)

Тип: Структура.
Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры - значение отбора по этому полю. В качестве полей для отбора могут задаваться измерения или реквизиты, для которых в конфигураторе признак индексирования установлен в значение "Индексировать".
Важно! Структура может содержать только один элемент.
Если параметр не указан, то отбор не используется.
<Порядок> (необязательный)

Тип: Строка.
Может содержать слово "Возр" или "Убыв", тогда стандартный порядок будет использоваться с указанным направлением. По умолчанию "Возр".
Может содержать имя поля (реквизита или измерения для которых указано индексирование) и слово "Возр" или "Убыв", тогда упорядочивание будет производится по указанному полю в указанном порядке.
Значение по умолчанию: Пустая строка
Возвращаемое значение:

Тип: РегистрНакопленияВыборка.

Описание:

Формирует выборку записей регистра накопления.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

// Посчитаем, сколько отгружено с начала года
УчетНоменклатуры = РегистрыНакопления.УчетНоменклатуры;
ОтборПоТовару = Новый Структура("Номенклатура");
ОтборПоТовару.Номенклатура = ВыбТовар;
НачДата = НачалоГода(ТекущаяДата());
КонДата = ТекущаяДата();
Выборка = УчетНоменклатуры.Выбрать(НачДата,КонДата,ОтборПоТовару);
Расход =0;
Пока Выборка.Следующий() Цикл
    Если Выборка.ВидДвижения = ВидДвиженияНакопления.Расход Тогда
        Расход = Расход + Выборка.Количество;
    КонецЕсли;
КонецЦикла;
Текст = "ru = ""Отгружено с начала года "";"
  + " en = ""It have been dispatched """;
Предупреждение(НСтр(Текст)+" """
     + СокрЛП(ВыбТовар) + """ = "+ Расход
     + НСтр("ru = "" шт."""; en = ""pcs."""));


2 GreatOne
 
23.01.15
00:49
+ к (1)

Отбор.Вставить("Документрезерва",Документы.ЗаказПокупателя.ПустаяСсылка());

Или как-нибудь "В" придумать, там же несколько типов документов. Я уже пьяный, хз как там
3 neo-55555
 
23.01.15
00:49
Что-то я не совсем понимаю, какой отбор нужно писать в регистратор...
4 GreatOne
 
23.01.15
00:50
(3)пустую ссылку
5 GreatOne
 
23.01.15
00:50
или неопределено. Посмотри, что там запрос выдает
6 neo-55555
 
23.01.15
00:50
Спасибо за подсказку, сейчас попробую
7 neo-55555
 
23.01.15
00:58
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    *
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();

Пока Выборка.Следующий() Цикл
    
    
НаборЗаписей.Отбор.Найти("Документрезерва",Документы.ЗаказПокупателя.ПустаяСсылка());
    


НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();


КонецЦикла;
КонецПроцедуры
8 neo-55555
 
23.01.15
00:59
Выдает ошибку. Не понимаю, что это

{Форма.Форма.Форма(18)}: Слишком много фактических параметров
НаборЗаписей.Отбор.Найти("Документрезерва",Документы.ЗаказПокупателя.ПустаяСсылка());
9 ssh2QQ6
 
23.01.15
01:03
(0) поломаешь базу.
Выбери запросом остатки регистра резервов где документ резерва пустой и корректировкой записей регистров обнули остатки
10 neo-55555
 
23.01.15
01:05
Подскажите, пожалуйста, как это делается. А то я в этом чайник. Никогда не делал этого.
11 GreatOne
 
23.01.15
01:07
(8)

РегистрНакопленияНаборЗаписей.<Имя регистра накопления> (AccumulationRegisterRecordSet.<Имя регистра накопления>)
Отбор (Filter)
Использование:

Только чтение.
Описание:

Тип: Отбор.
Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Позволяет отобрать записи с определенным регистратором при считывании или записи набора.
Важно! Отбор может устанавливаться только на равенство.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Для установки фильтрации используется стандартный объект, через который устанавливается предопределенный элемент отбора.


Отбор на регистратор ставится. На пустую ссылку в твоем случае. А так да, в (9) прав)))
12 neo-55555
 
23.01.15
01:20
Вроде маленькая обработка, а не получается  и всё тут. Не знаю уже что делать
13 neo-55555
 
23.01.15
01:21
Пишу таким образом

НаборЗаписей.Отбор.Найти(Документы.ЗаказПокупателя.ПустаяСсылка());
14 neo-55555
 
23.01.15
01:22
Помогите, пожалуйста.
15 GreatOne
 
23.01.15
01:34
НаборЗаписей.Отбор.Регистратор.Значение = Документы.ЗаказПокупателя.ПустаяСсылка();
НаборЗаписей.прочитать();
16 neo-55555
 
23.01.15
08:00
В общем получилось следующее:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    *
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();

Пока Выборка.Следующий() Цикл
    
    
    НаборЗаписей.Отбор.Регистратор.Значение = Документы.ЗаказПокупателя.ПустаяСсылка();     
    


НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();


КонецЦикла;
КонецПроцедуры
17 neo-55555
 
23.01.15
08:02
И выходит ошибка:

{Форма.Форма.Форма(23)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Товары в резерве на складах)


Удалял
НаборЗаписей.Записать();


Ошибок нет, но ничего не делает вообще.
18 НЕА123
 
23.01.15
08:14
зачем запрос, циклы, Прочитать?    


Процедура КнопкаВыполнитьНажатие(Кнопка)

НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Регистратор.УСТАНОВИТЬ( Документы.ЗаказПокупателя.ПустаяСсылка());    
НаборЗаписей.Записать();

КонецПроцедуры
19 НЕА123
 
23.01.15
08:15
(18)+
только осторожнее с такими делами...
20 neo-55555
 
23.01.15
08:34
Ну я не профессионал в таких делах, я только учусь. Спасибо за умные мысли. Попробую
21 neo-55555
 
23.01.15
08:39
Сделал так:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    *
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах";


НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();


    
    
НаборЗаписей.Отбор.Регистратор.УСТАНОВИТЬ( Документы.ЗаказПокупателя.ПустаяСсылка());     
    


НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();



КонецПроцедуры
22 neo-55555
 
23.01.15
08:40
В итоге такая же ошибка:

{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Товары в резерве на складах)
23 Зачем1С
 
23.01.15
08:48
(21) Дык ты делаешь отбор по регистратору, а он не ПустаяСсылка. В Запросе сразу отбор сделай по пустым документам резерва, а потом только обрабатывай наборызаписей с отбором по регистратору из резулльтата запроса
24 neo-55555
 
23.01.15
08:53
Вы имеете в виду так:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    *
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах;
|    ГДЕ
|    ТоварыВРезервеНаСкладах.ЗаказПокупателя = ЗНАЧЕНИЕ (Документы.ЗаказПокупателя.ПустаяСсылка())";


НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();


    
    
НаборЗаписей.Отбор.Регистратор.УСТАНОВИТЬ(Документы.ЗаказПокупателя.ПустаяСсылка());     
    



НаборЗаписей.Очистить();
НаборЗаписей.Записать();



КонецПроцедуры
25 Зачем1С
 
23.01.15
08:55
Только вот
НаборЗаписей.Отбор.Регистратор.УСТАНОВИТЬ(Документы.ЗаказПокупателя.ПустаяСсылка());  
Не Документы.ЗаказПокупателя.ПустаяСсылка(), а Выборка.Регистратор
26 neo-55555
 
23.01.15
08:59
Тогда нужно ВЫБОРКУ задавать?
27 neo-55555
 
23.01.15
09:03
Уже со вчерашнего дня мучаюсь над этой обработкой
28 Зачем1С
 
23.01.15
09:03
Загони результат запроса в цикл, вот и выборка
29 neo-55555
 
23.01.15
09:06
Вы имеете в виду?

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    *
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах;
|    ГДЕ
|    ТоварыВРезервеНаСкладах.ЗаказПокупателя = ЗНАЧЕНИЕ(Документы.ЗаказПокупателя.ПустаяСсылка())";

Выборка = Результат.Выбрать();
НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();
Пока Выборка.Следующий()Цикл

                       
НаборЗаписей.Отбор.Регистратор.УСТАНОВИТЬ(Выборка.Регистратор);     


НаборЗаписей.Очистить();
НаборЗаписей.Записать();


КонецЦикла;
КонецПроцедуры
30 neo-55555
 
23.01.15
09:24
Помогите, пожалуйста, люди добрые. Очень нужна обработка эта...
31 НЕА123
 
23.01.15
09:40
должно удалить пустые, неопределено, битые.
только на копии делай.


Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    Регистратор
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах;
|    ГДЕ
|    ТоварыВРезервеНаСкладах.Регистратор.Ссылка Есть NULL";

Выборка = Результат.Выбрать();
НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();
Пока Выборка.Следующий()Цикл

                      
НаборЗаписей.Отбор.Регистратор.УСТАНОВИТЬ(Выборка.Регистратор);    


НаборЗаписей.Записать();


КонецЦикла;
КонецПроцедуры

PS
че-то очкую я, Ришат.(с)
32 eklmn
 
гуру
23.01.15
09:42
пля запусти ТИИ уже с нужными параметрами
33 neo-55555
 
23.01.15
09:47
Запускал, не получается. Не удаляет...
34 eklmn
 
гуру
23.01.15
09:49
(33) а радиобаттоны поставил чтоб удаляло?
35 neo-55555
 
23.01.15
10:09
НЕА123, пишет ошибку
{Форма.Форма.Форма(12,11)}: Переменная не определена (Результат)
Выборка = <<?>>Результат.Выбрать(); (Проверка: Толстый клиент (обычное приложение))
36 ДенисЧ
 
23.01.15
10:11
(35) Результат = Запрос.Выполнить();

)))
37 neo-55555
 
23.01.15
10:13
Теперь проблема

{Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(5, 5)}: Ожидается выражение "ВЫБРАТЬ"
<<?>>ГДЕ


Код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    Регистратор
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах;
|    ГДЕ
|    ТоварыВРезервеНаСкладах.Регистратор.Ссылка Есть NULL";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();
Пока Выборка.Следующий()Цикл

                      
НаборЗаписей.Отбор.Регистратор.УСТАНОВИТЬ(Выборка.Регистратор);    


НаборЗаписей.Записать();


КонецЦикла;
КонецПроцедуры
38 neo-55555
 
23.01.15
10:14
Вроде всё правильно. Не пойму ошибку
39 ДенисЧ
 
23.01.15
10:15
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах;


Тут ; лишняя....
Надо иногда включать голову, а не тупо копировать....
40 neo-55555
 
23.01.15
10:35
Я просто впервые обработку пиши и многих вещей еще не знаю...

Посмотрите, пожалуйста, код

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ЗаказПокупателя
|    ИЗ
|    РегистрНакопления.ТоварыВРезервеНаСкладах
|    ГДЕ
|    ТоварыВРезервеНаСкладах.ЗаказПокупателя = Документы.ЗаказПокупателя.ПустаяСсылка";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
НаборЗаписей = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();
Пока Выборка.Следующий()Цикл

                      
НаборЗаписей.Отбор.Регистратор.УСТАНОВИТЬ(Выборка.Регистратор);    

НаборЗаписей.Очистить();
НаборЗаписей.Записать();

КонецЦикла;
КонецПроцедуры
41 neo-55555
 
23.01.15
10:36
Теперь ошибка выходит:

{Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(6, 5)}: Поле не найдено "ТоварыВРезервеНаСкладах.ЗаказПокупателя"
<<?>>ТоварыВРезервеНаСкладах.ЗаказПокупателя = Документы.ЗаказПокупателя.ПустаяСсылка
42 ДенисЧ
 
23.01.15
10:36
|    ТоварыВРезервеНаСкладах.ЗаказПокупателя = ЗНАЧЕНИЕ(Документы.ЗаказПокупателя.ПустаяСсылка)";
43 neo-55555
 
23.01.15
10:38
Теперь ошибка:

{Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(6, 56)}: Неверные параметры "Документы.ЗаказПокупателя.ПустаяСсылка"
ТоварыВРезервеНаСкладах.ЗаказПокупателя = ЗНАЧЕНИЕ(<<?>>Документы.ЗаказПокупателя.ПустаяСсылка)
44 Шапокляк
 
23.01.15
10:40
Документ.ЗаказПокупателя.ПустаяСсылка
45 neo-55555
 
23.01.15
10:48
Люди добрые, помогите, у кого есть время
46 ДенисЧ
 
23.01.15
10:50
В программе документЫ, в запросе Документ.
47 neo-55555
 
23.01.15
11:02
Почему он ругается на Результат = Запрос.Выполнить();?

{Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(6, 5)}: Поле не найдено "ТоварыВРезервеНаСкладах.ЗаказПокупателя"
<<?>>ТоварыВРезервеНаСкладах.ЗаказПокупателя = ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
48 ДенисЧ
 
23.01.15
11:05
Нету в регистре такого поля...
49 neo-55555
 
23.01.15
11:15
Мне нужно в столбце Документ Резерва, отобрать пустые значения и удалить их.
Что тогда вбить, чтобы он увидел этот столбец
50 Зачем1С
 
23.01.15
11:26
Посмотри свой регистр и напиши запрос правильно
51 Зачем1С
 
23.01.15
11:30
Нет у тебя в регистр "ЗаказПокупателя"
52 ДенисЧ
 
23.01.15
11:31
(49) Я бы предложил вбить кол в грудь запросописателя... Но это как-то не хорошо...
Может, позовёшь того, кто хоть что-то понимает в 1с?
53 neo-55555
 
23.01.15
11:34
Никого нет, к сожалению. Приходиться самому изучать
54 ДенисЧ
 
23.01.15
11:35
(53) Тогда придётся включать голову (ну, если есть, что включать) и думать. Смотреть на структуру данных, например...
55 Зачем1С
 
23.01.15
11:38
Пользуйся конструктором запроса
56 neo-55555
 
23.01.15
12:14
Всем спасибо большое спасибо за советы. Буду думать  головой :)
Ошибка? Это не ошибка, это системная функция.