Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Kamazov
5 / 4 / 2
Регистрация: 05.01.2022
Сообщений: 393

Внешняя обработка для замены значений в документах

11.03.2024, 16:09. Показов 2655. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, давно я программированием не занимался. На работе в основном работа с данными, а не с программированием. Сейчас хочу сделать универсальную обработку, чтобы менять значения в полях документа. Чтобы можно было выбрать договор, значение в поле, которое нужно заменить и значение на которое нужно заменить. Предполагаю использовать на сервере вот такую процедуру.

1C
1
2
3
4
5
6
7
8
9
Процедура ЗаменитьЗначение()
    ВыбранноеПоле = ЭлементыФормы.СписокЗначений.ТекущееЗначение; // Получение выбранного значения поля
    Документ = Документы.ДоговорыКонтрагентов.НайтиПоНомеру("НомерДоговора");
    
    Если Документ <> Неопределено Тогда
        Документ.Поле = ВыбранноеПоле; // Замена значения поля
        Документ.Записать(); // Запись документа
    КонецЕсли;
КонецПроцедуры
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2024, 16:09
Ответы с готовыми решениями:

Внешняя обработка для УФ
делаю внешнюю обработку для бухгалтерии 3.0, подключил ее как внешнюю, указал ссылку на документ в котором будет вызываться, а где теперь...

Внешняя обработка для документа
Типовая конфигурация бухгалтерии. Есть документ &quot;Комплектация номенклатуры&quot; Нужно добавить внешнюю обработку для заполнения этого...

Внешняя Обработка (.ert) Для Чеков
Здравсвуйте!! У нас в магазине 1С 7.7 Торговля и склад SQL 2005+ Windows Server 2003 ... Дайте совет и помогите Если клиент покупает с...

28
Эксперт 1С
7176 / 1778 / 648
Регистрация: 16.01.2015
Сообщений: 7,347
20.03.2024, 18:55
Студворк — интернет-сервис помощи студентам
Kamazov, Общий модуль ОбщегоНазначения.МестаИспользования(Набо рСсылок); Взят из типовой конфигурации (БСП). Если бы сразу написал с именем общего модуля, все сразу стало бы ясно
1
Эксперт 1С
2758 / 256 / 77
Регистрация: 12.11.2015
Сообщений: 1,565
21.03.2024, 08:30
polax, нет, я пришел к нему через 2 запроса, первый "МестаИспользования(НаборСсылок)" меня привел к тому, что есть в общем модуле, второй уже запрос был: "ОбщегоНазначения.МестаИспользования(Наб орСсылок)", тогда выдало первую ссылку на данный модуль из БСП. 2 минуты на поиске в нете
1
 Аватар для Kamazov
5 / 4 / 2
Регистрация: 05.01.2022
Сообщений: 393
21.03.2024, 14:30  [ТС]
Скажите пожалуйста, почему склад не перезаписывает?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
&НаСервере
Процедура ИзменениеРеквизитаНаСервере(ДокСсылка, Новое_значение_реквизита)
        
    Если  Не ДокСсылка.Пустая() Тогда
 
        //ДокОбъект=ДокументыПоступлениеТоваров.ПолучитьОбъект(); 
        ДокОбъект = Документы.ПоступлениеТоваров.НайтиПоНомеру(НомерДокумента);
        //ДокОбъект.Склад = Новое_значение_реквизита;
        ДокОбъект.Склад = Новое_значение_реквизита;
        ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
         
         
 
        Попытка
            ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки
 
    Иначе
        Сообщить(Новое_значение_реквизита+" не записано в "+ДокСсылка+"! Документ не определен");
    КонецЕсли
КонецПроцедуры
 
&НаКлиенте
Процедура ИзменениеРеквизита(Команда)
    ИзменениеРеквизитаНаСервере(ДокСсылка, Новое_значение_реквизита);
КонецПроцедуры
Миниатюры
Внешняя обработка для замены значений в документах   Внешняя обработка для замены значений в документах   Внешняя обработка для замены значений в документах  

0
Модератор
Эксперт 1С
 Аватар для Yulunga
4771 / 967 / 269
Регистрация: 22.04.2013
Сообщений: 6,648
Записей в блоге: 1
21.03.2024, 15:11
потому что записывается только в объект
0
Эксперт 1С
2758 / 256 / 77
Регистрация: 12.11.2015
Сообщений: 1,565
21.03.2024, 15:12
ДокОбъект после нахождения нужно получить как объект, чтобы записывать
0
 Аватар для Kamazov
5 / 4 / 2
Регистрация: 05.01.2022
Сообщений: 393
22.03.2024, 11:59  [ТС]
Цитата Сообщение от slypower Посмотреть сообщение
ДокОбъект после нахождения нужно получить как объект, чтобы записывать
Цитата Сообщение от Yulunga Посмотреть сообщение
потому что записывается только в объект
Проблема в том, что не находит такой метод

1C
1
2
3
4
5
Метод объекта не обнаружен (Получить)
{Обработка.ИзменениеРеквизита.Форма.Форма.Форма(15)}:ДокОбъект = Документы.ПоступлениеТоваров.Получить(НомерДокумента);
{Обработка.ИзменениеРеквизита.Форма.Форма.Форма(36)}:ИзменениеРеквизитаНаСервере(ДокСсылка, Новое_значение_реквизита);
 
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
&НаСервере
Процедура ИзменениеРеквизитаНаСервере(ДокСсылка, Новое_значение_реквизита)
    // Вставить содержимое обработчика. 
    // Процедура программно меняет значение реквизита объекта (документа)
    // ДокСсылка - документ в котором необходимо изменить реквизит
    // Новое_значение_реквизита - новое значение реквизита "Реквизит_для_корректировки"
 
    // или так: ДокументССылка=Документы.ТТН.НайтиПоНомеру(СокрЛП(Ном),Дата('2021-05-16'));
        
    Если  Не ДокСсылка.Пустая() Тогда
 
        //ДокОбъект=ДокументыПоступлениеТоваров.ПолучитьОбъект(); 
        ДокОбъект = Документы.ПоступлениеТоваров.НайтиПоНомеру(НомерДокумента);
        ДокОбъект = Документы.ПоступлениеТоваров.Получить(НомерДокумента);
        //ДокОбъект = Документы.ПоступлениеТоваров.НайтиПоНомеру(НомерДокумента)
        ////ДокОбъект.Склад = Новое_значение_реквизита;
        ДокОбъект.Склад = Новое_значение_реквизита;
        ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
         
         
 
        Попытка
            ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки
 
    Иначе
        Сообщить(Новое_значение_реквизита+" не записано в "+ДокСсылка+"! Документ не определен");
    КонецЕсли
КонецПроцедуры
 
&НаКлиенте
Процедура ИзменениеРеквизита(Команда)
    ИзменениеРеквизитаНаСервере(ДокСсылка, Новое_значение_реквизита);
КонецПроцедуры
0
Эксперт 1С
7176 / 1778 / 648
Регистрация: 16.01.2015
Сообщений: 7,347
22.03.2024, 12:41
Каша в голове. Читай внимательней источники. Объект получить из ссылки
1C
1
2
3
 Если  Не ДокСсылка.Пустая() Тогда
 
                ДокОбъект = ДокСсылка.ПолучитьОбъект();
1
 Аватар для Kamazov
5 / 4 / 2
Регистрация: 05.01.2022
Сообщений: 393
26.03.2024, 13:20  [ТС]
Допилил я свою простейшую задачу. Вот так всё работает. О качестве алгоритма и кода судить не могу. Как минимум он так себе, потому что документ может записаться с пустым полем "склад".

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Процедура ИзменениеРеквизитаНаСервере(ДокСсылка, Новое_значение_реквизита)
    
    ДокССылка=Документы.ПоступлениеТоваров.НайтиПоНомеру(НомерДокумента);    
    Если  Не ДокСсылка.Пустая() Тогда 
        
        ДокОбъект = ДокСсылка.ПолучитьОбъект();
        ДокОбъект.Склад = Новое_значение_реквизита;
        ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
        Попытка
            ДокОбъект.Записать(РежимЗаписиДокумента.Проведение); 
            Сообщить("Документ записан");
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки
        
    Иначе
        Сообщить(Новое_значение_реквизита+" не записано в "+ДокСсылка+"! Документ не определен");
    КонецЕсли
КонецПроцедуры
0
Модератор
Эксперт 1С
 Аватар для Yulunga
4771 / 967 / 269
Регистрация: 22.04.2013
Сообщений: 6,648
Записей в блоге: 1
26.03.2024, 14:43
1C
1
2
3
4
докссылка, имяреквизита, значениереквизита
...
докобъект[имяреквизита] = значениереквизита
...
ну там можно проверку на наличие такого реквизита
на
1C
1
значениезаполнено(значениереквизита)
Добавлено через 1 минуту
ну и да. получаешь докссылка в параметрах и тут же меняешь эту ссылку на какую-то другую, определяемую неизвестно чем (номердокумента)?
ну так себе
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2024, 14:43

Внешняя обработка для эквайрингового терминала
Собственно, нужно заставить работать терминал Ingenico ICT220 с популярными торговыми конфигурациями 1С. Банк ВТБ24 сказал что обработки у...

Внешняя обработка для создания документа
Нужно создать внешнюю обработку для созданию общего заказа поставщику из остальных заказов с выбором периода(Документ Заказ поставщику)....

Внешняя обработка для копирования документов
Здраствуйте, создаю внешнюю обработку для копирования документов. Не могу понять как застить ее выбрать организацию и подразделение...

Внешняя обработка для запуска регламентного задания
Привет всем. У меня 1С 8.2 почему глючит регламентные задания. Есть другое регламентное задание, так оно нормально работает. Создал...

внешняя обработка для изменения свойств номенклатуры
1С восьмерка занимаюсь совсем недавно, так что может вопрос и простой, но для меня сложный ) ситуация: нужно изменить одно из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru