Имя: Пароль:
1C
 
Прошу помощи с кодом выборки организации
0 Aleks_0684
 
15.12.25
10:01
Добрый день. Такой вопрос в 1с Бухгалтерия заведены 2 организации. У каждой свой префикс. Есть справочник авансовых отчетов, где нумерация сбилась, необходимо установить правильную нумерацию.
Использую такой код:

начатьтранзакцию();
Выборка = Документы.АвансовыйОтчет.Выбрать(Дата(2025,1,1),ТекущаяДата(),,"Дата");
Номер = 1;
Пока Выборка.Следующий() Цикл
Сообщить(Выборка);
Док = Выборка.ПолучитьОбъект();
Док.Номер = "08zv-"+Формат(Номер, "ЧЦ=6; ЧВН=; ЧГ=0");
Док.Комментарий ="#Номер изменен";
Док.Записать();
Сообщить(Док.Номер);
Номер = Номер+1;
КонецЦикла;
зафиксироватьтранзакцию();

Он переименовывает все документы авансового отчета, соответственно изменяя префикс у обеих организаций.
Как мне сделать что б данная обработка затрагивала только документы одной из организаций, при этом не трогая документы другой?
1 Aleks_0684
 
15.12.25
10:02
Я так понимаю нужно добавить выборку по организации.
Выбор = Организация.Наименование=Организация1

Выдает синтаксическую ошибку что переменная не определена.
2 Табуретко
 
15.12.25
10:04
а запросом религия не позволяет?
3 Aleks_0684
 
15.12.25
10:07
Мозгов у меня не хватает. Поэтому и прошу помощи.
4 Волшебник
 
15.12.25
10:09
Говнокод без лесенки
5 AAA
 
15.12.25
10:13
(3)Какие тут мозги нужны? В цикл вставляете условие Выборка.Организация. Либо в запрос, как тут правильно советовали. Непосредственно в выборке лучше не менять объект
Не Наименование у Организации сравнивать, а ссылку
6 Fish
 
гуру
15.12.25
10:15
(1) Ну так почитай СП. У метода Выбрать() есть параметр "Отбор". Его и задавай.
7 Волшебник
 
15.12.25
10:16
(6) При этом реквизит должен быть проиндексирован
8 Табуретко
 
15.12.25
10:20
Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ
|    АвансовыйОтчет.Ссылка КАК Авансовый
|ИЗ
|    Документ.АвансовыйОтчет КАК АвансовыйОтчет
|ГДЕ
|    АвансовыйОтчет.Организация = &Организация
|    И АвансовыйОтчет.Дата >= &ВыбДата
|
|УПОРЯДОЧИТЬ ПО
|    АвансовыйОтчет.Дата";

Запрос.Параметры.Вставить("Организация",Справочники.Организации.НайтиПоНаименованию("ООО Рога и Копыта");
Запрос.Параметры.Вставить("ВыбДата", '20250101');
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Авансовый);    
//далее ваш код

но я бы реквизиты отбора на форму повесил...
9 Ногаминебить
 
15.12.25
10:31
(0) Просто чтоб разбавить общий хор.
Завести отдельный счетчик нумератора под каждую организацию, проверять какая в конкретном документе и его плюсовать. :)
10 Aleks_0684
 
15.12.25
10:32
(8) Все равно меняет нумерацию и префикс сразу у обеих организаций
11 Kigo_Kigo
 
15.12.25
10:36
(10) А ты "ООО Рога и Копыта" ищешь? бгггг
12 Aleks_0684
 
15.12.25
10:38
Нет конечно. поставил наименование своей организации
13 Fish
 
гуру
15.12.25
10:45
(10) А у второй организации наименование отличается?
14 Aleks_0684
 
15.12.25
10:55
(13) Конечно. 2 разные организации с разным наименованием
15 Табуретко
 
15.12.25
10:57
(14) можно еще раз код в студию?
16 Fish
 
гуру
15.12.25
10:58
(14) Тогда не может быть такого. Показывай свой код.
17 Aleks_0684
 
15.12.25
11:01
Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ
|    АвансовыйОтчет.Ссылка КАК Авансовый
|ИЗ
|    Документ.АвансовыйОтчет КАК АвансовыйОтчет
|ГДЕ
|    АвансовыйОтчет.Организация = &Организация
|    И АвансовыйОтчет.Дата >= &ВыбДата
|
|УПОРЯДОЧИТЬ ПО
|    АвансовыйОтчет.Дата";

Запрос.Параметры.Вставить("Организация",Справочники.Организации.НайтиПоНаименованию("Восток"));
Запрос.Параметры.Вставить("ВыбДата", '20250101');
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Авансовый);  

начатьтранзакцию();
Выборка = Документы.АвансовыйОтчет.Выбрать(Дата(2025,1,1),ТекущаяДата(),,"Дата");
Номер = 1;
Пока Выборка.Следующий() Цикл
Сообщить(Выборка);
Док = Выборка.ПолучитьОбъект();
Док.Номер = "08zv-"+Формат(Номер, "ЧЦ=6; ЧВН=; ЧГ=0");
Док.Комментарий ="#Номер изменен";
Док.Записать();
Сообщить(Док.Номер);
Номер = Номер+1;
КонецЦикла;
зафиксироватьтранзакцию();    
КонецЦикла;
18 Kigo_Kigo
 
15.12.25
11:02
(12) Дак встань отладчиком,проверь, ищется организация или там пусто?
19 Табуретко
 
15.12.25
11:05
Выборка = Документы.АвансовыйОтчет.Выбрать(Дата(2025,1,1),ТекущаяДата(),,"Дата");
свою выборку с циклом накой поставили?
Вы точно программист?
20 Aleks_0684
 
15.12.25
11:06
(8) Так написали же //Далее ваш код. Я кстати подумал еще зачем два раза выборка по дате...
21 Табуретко
 
15.12.25
11:08
транзакцию за цикл вынесите и замените
Док = Выборка.ПолучитьОбъект();
на
Док = Выборка.Авансовый.ПолучитьОбъект();
22 Aleks_0684
 
15.12.25
11:10
Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ
|    АвансовыйОтчет.Ссылка КАК Авансовый
|ИЗ
|    Документ.АвансовыйОтчет КАК АвансовыйОтчет
|ГДЕ
|    АвансовыйОтчет.Организация = &Организация
|    И АвансовыйОтчет.Дата >= &ВыбДата
|
|УПОРЯДОЧИТЬ ПО
|    АвансовыйОтчет.Дата";

Запрос.Параметры.Вставить("Организация",Справочники.Организации.НайтиПоНаименованию("Восток"));
Запрос.Параметры.Вставить("ВыбДата", '20250101');
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Авансовый);  

начатьтранзакцию();
Номер = 1;
Пока Выборка.Следующий() Цикл
Сообщить(Выборка);
Док = Выборка.Авансовый.ПолучитьОбъект();
Док.Номер = "08zv-"+Формат(Номер, "ЧЦ=6; ЧВН=; ЧГ=0");
Док.Комментарий ="#Номер изменен";
Док.Записать();
Сообщить(Док.Номер);
Номер = Номер+1;
КонецЦикла;
зафиксироватьтранзакцию();    
КонецЦикла;

Так?
23 Fish
 
гуру
15.12.25
11:11
(20) Тщательнее надо думать.
24 Fish
 
гуру
15.12.25
11:11
(22) Нет, не так. Думай лучше.
25 Aleks_0684
 
15.12.25
11:11
начатьтранзакцию();

Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ
|    АвансовыйОтчет.Ссылка КАК Авансовый
|ИЗ
|    Документ.АвансовыйОтчет КАК АвансовыйОтчет
|ГДЕ
|    АвансовыйОтчет.Организация = &Организация
|    И АвансовыйОтчет.Дата >= &ВыбДата
|
|УПОРЯДОЧИТЬ ПО
|    АвансовыйОтчет.Дата";

Запрос.Параметры.Вставить("Организация",Справочники.Организации.НайтиПоНаименованию("Восток"));
Запрос.Параметры.Вставить("ВыбДата", '20250101');
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Авансовый);  
Номер = 1;
Пока Выборка.Следующий() Цикл
Сообщить(Выборка);
Док = Выборка.Авансовый.ПолучитьОбъект();
Док.Номер = "08zv-"+Формат(Номер, "ЧЦ=6; ЧВН=; ЧГ=0");
Док.Комментарий ="#Номер изменен";
Док.Записать();
Сообщить(Док.Номер);
Номер = Номер+1;
КонецЦикла;
зафиксироватьтранзакцию();    
КонецЦикла;
26 AAA
 
15.12.25
11:12
(10)Возьмите себя в руки ) Напишите сначала просто запрос или выборку документов по требуемой организации. Это пара минут
Потом уже меняйте что либо
27 Табуретко
 
15.12.25
11:12
(25)да как-же так? Может позовем специалиста?
28 Fish
 
гуру
15.12.25
11:17
(25) Убери цикл в цикле.
29 Aleks_0684
 
15.12.25
11:19
(27) Так я за этим сюда и обратился )
30 Aleks_0684
 
15.12.25
11:20
(28) начатьтранзакцию();

Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ
|    АвансовыйОтчет.Ссылка КАК Авансовый
|ИЗ
|    Документ.АвансовыйОтчет КАК АвансовыйОтчет
|ГДЕ
|    АвансовыйОтчет.Организация = &Организация
|    И АвансовыйОтчет.Дата >= &ВыбДата
|
|УПОРЯДОЧИТЬ ПО
|    АвансовыйОтчет.Дата";

Запрос.Параметры.Вставить("Организация",Справочники.Организации.НайтиПоНаименованию("Восток"));
Запрос.Параметры.Вставить("ВыбДата", '20250101');
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Авансовый);  
Номер = 1;
Сообщить(Выборка);
Док = Выборка.Авансовый.ПолучитьОбъект();
Док.Номер = "08zv-"+Формат(Номер, "ЧЦ=6; ЧВН=; ЧГ=0");
Док.Комментарий ="#Номер изменен";
Док.Записать();
Сообщить(Док.Номер);
Номер = Номер+1;
КонецЦикла;
зафиксироватьтранзакцию();
31 Табуретко
 
15.12.25
11:20
неправильно
32 Fish
 
гуру
15.12.25
11:21
(29) Так тебе уже все советы дали. Осталось немного голову включить. Или ты хочешь, чтобы тут за тебя твою работу сделали?
33 Табуретко
 
15.12.25
11:21
Номер = 1; куда нужно вынести?
34 Aleks_0684
 
15.12.25
11:28
(33) Я так понимаю за цикл?
35 1cVandal
 
15.12.25
11:34
(34) правильно
36 Табуретко
 
15.12.25
11:34
(34) а почему?
37 1cVandal
 
15.12.25
11:35
интересно он попадет на ошибку что номер не уникален....
38 Aleks_0684
 
15.12.25
11:36
Потому что так будет правильно )
Но при выполнении запроса 1с выдает ошибку теперь.
39 Волшебник
 
15.12.25
11:40
(25) му-ха-ха
40 1cVandal
 
15.12.25
11:37
когда пишешь про ошибку, ты её текст сразу публикуй
41 1cVandal
 
15.12.25
11:41
в Сообщить(Выборка) падает?) убери нафиг
42 Fish
 
гуру
15.12.25
11:41
Какой-то миста-кодинг получается (по аналогии с вайб-кодингом).
Пациент думать не хочет, только даёт директивы, как ИИ.
43 1cVandal
 
15.12.25
11:44
(42) все когда то начинали)
44 Волшебник
 
15.12.25
12:24
(42) ОНИ нас воспринимают как ботов.
wiki:Чужие_среди_нас
45 craxx
 
15.12.25
12:40
(0) а Вы кем там в этой организации?