Имя: Пароль:
1C
1С v8
УТ11.5 Перепроведение Заказ клиента, с обновленным соглашением.
0 newtech
 
naïve
03.02.23
10:34
Из УНФ синхронизированы ЗК, настроены соглашения для всех контрагентов. Есть ли способ перепровести все ЗК., с обновлением регистров согласно соглашению.
я так понимаю в управляемых формах перепроведение работает несколько иначе.
1 saaken
 
03.02.23
10:43
Причем здесь формы и проведение
2 Мультук
 
гуру
03.02.23
10:44
(0)

1) Примерно вот такой псевдо-код
2) Лучше потренироваться, сменить соглашение вручную, потом программно и увидеть, что результаты одинаковые
3) Соглашения я программно не менял, готового кода нет

об = Ссылка.ЗаказКлиента.ПолучитьОбъект();
об.Соглашение = НовоеСоглашение;

//смотрим в форму документа, что происходит при смене соглашения, анализируем вызовы
//выполняем {здесь} этот код, который связан непосредственно с бизнес-логикой, а не с формой
//имхо если этого не делать, ничего не поменяется

об.Записать(РежимЗаписиДокумента.Проведение);
3 newtech
 
naïve
05.02.23
11:24
(2) Нужна помощь.
Создал Расширение, в котором Создал программно кнопку на форме списка ЗК. В обработчик добавил такой код

ВыделенныеСсылки = ОбщегоНазначенияУТКлиент.ПроверитьПолучитьВыделенныеВСпискеСсылки(Элементы.Список);
    Если ВыделенныеСсылки.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;
    Сообщить("Количество выделенных строк ="+ВыделенныеСсылки.Количество()); //____________

те. выбираю Заказы в которых нужно обновить соглашение, и получаю массив ссылок на документы.
как обратится к документу не открывая его, и вызвать в нем событие СоглашениеПриИзменении(Элемент), ну и перепровести в конечном итоге.
4 Мультук
 
гуру
05.02.23
12:52
(3)

Я в (2) вроде всё подробно написал. Что не так?
5 newtech
 
naïve
05.02.23
13:17
(4) об = Ссылка.ЗаказКлиента.ПолучитьОбъект(), эта строчка не понятна, у меня не работает., я только учусь ))
я так понимаю нужно из массива получить получить ссылку на Заказ, не могу понять как это сделать.
6 Мультук
 
гуру
05.02.23
13:41
(5)

Как по мне, для новичка вы взяли очень нетривиальную задачу

P.S.

Я бы на вашем месте отложил бы в сторону расширение и прочее

Создал бы новую обработку
с ревзитами:
- ЗаказКлиента
- НовоеСоглашение

Вынес бы на форму этой обработки кнопки (команду) и начал бы писать функцию "ЗаменитьСоглашение"

&НаКлиенте
Процедура СделатьХорошо(Команда)
    ЗаменитьСоглашение(Объект.ЗаказКлиента, Объект.НовоеСоглашение);
КонецПроцедуры


&НаСервереБезКонтекста
Функция ЗаменитьСоглашение(СсылкаНаЗаказКлиента, СсылкаНовоеСоглашение)
    
    об = СсылкаНаЗаказКлиента.ПолучитьОбъект();
    Об.Соглашение = СсылкаНовоеСоглашение;
    //смотрим в форму документа, что происходит при смене соглашения, анализируем вызовы
    //выполняем {здесь} этот код, который связан непосредственно с бизнес-логикой, а не с формой
    //имхо если этого не делать, ничего не поменяется
    
    Об.Записать(РежимЗаписиДокумента.Проведение);
    
    Возврат истина;
КонецФункции


После того как эта функция заработает и заработает правильно, ее код можно будет перенести куда-нибудь еще.

P.P.S.

Кстати, пользователю в вашем расширении нужно как то дать выбрать новое соглашение.
7 newtech
 
naïve
05.02.23
14:26
(6) Пользователь, владелец базы, администратор и программист - одно лицо, пока что )).
у меня конфигурация на поддержке, потому решил через Расширение., причем многие функции уже работают как надо., на данный момент пытаюсь учится с некоторой пользой (добавление разных плюшек).