Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
barracuda1991
1 / 1 / 1
Регистрация: 30.07.2015
Сообщений: 115
Завершенные тесты: 1
1

Перебор документов и их табличных частей, замена нужного товара на новый и перепроведение

01.06.2016, 10:27. Просмотров 2336. Ответов 5
Метки нет (Все метки)

1С:Предприятие 8.2 (8.2.19.130)
Подскажите пожалуйста, не могу заменить найденный в табличной части товар на новый товар (форма во вложении, поле - Новый товар), и перепровести документ. Замена строки табличной части нужно производить на клиенте? Или на сервере?
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
&НаСервере
Процедура Запрос1()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    ПриходнаяНакладная.Ссылка
               |ИЗ
               |    Документ.ПриходнаяНакладная КАК ПриходнаяНакладная";
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
    ДокОбъект = Выборка.ПолучитьОбъект();
    ТЧ = Выборка.Ссылка.СписокНоменклатуры;
    Проводить = Ложь;
    Для Каждого СтрокаТабЧасти Из ТЧ Цикл
        Сообщить(СтрокаТабЧасти.Номенклатура);
        Если СтрокаТабЧасти.Номенклатура.Ссылка = ЗаменяемыйТовар.Ссылка Тогда
             СтрокаТабЧасти.Номенклатура = НовыйТовар;
             Проводить = Истина;
        КонецЕсли;
    КонецЦикла;
    Если Проводить Тогда
        ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
    КонецЕсли; 
КонецЦикла; 
КонецПроцедуры
 
&НаКлиенте
Процедура ЗапросПоПН(Команда)
    Запрос1()
КонецПроцедуры
0
Миниатюры
Перебор документов и их табличных частей, замена нужного товара на новый и перепроведение  
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2016, 10:27
Ответы с готовыми решениями:

Вывод на печать табличных частей документов
Здравствуйте Есть документ, в котором две табличные части. В первой ТЧ: Работник и ДатаРождения...

Полное соединение табличных частей двух документов
Здравствуйте. Пытаюсь соединить две табличные части двух документов...

Перепроведение документов
Добрый день! Подскажите пожалуйста. Необходимо перепровести документы. Пытаюсь установить дату...

Перепроведение документов
Здраствуйте. Мне, в УСН, потребовалось дописать модуль документов, а именно партионный учет, для...

Подписка на событие, Общий модуль, глобальное перепроведение документов
Добрый день. Создала подписку на событие: Источник - Документ "Поступление из переработки"...

5
SHIFT_969
Злой самаритянин
179 / 180 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
01.06.2016, 10:47 2
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Пока Выборка.Следующий() Цикл
    ДокОбъект = Выборка.Ссылка.ПолучитьОбъект(); // Объект получаем по ссылке, а не по выборке.
    ТЧ = ДокОбъект.СписокНоменклатуры; // И работаем с Объектом дальше, а не через ссылку
    Проводить = Ложь;
    Для Каждого СтрокаТабЧасти Из ТЧ Цикл
        Сообщить(СтрокаТабЧасти.Номенклатура);
        Если СтрокаТабЧасти.Номенклатура.Ссылка = ЗаменяемыйТовар.Ссылка Тогда
             СтрокаТабЧасти.Номенклатура = НовыйТовар; // Что такое НовыйТовар?
             Проводить = Истина;
        КонецЕсли;
    КонецЦикла;
    Если Проводить Тогда
        ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
    КонецЕсли;  
КонецЦикла;
Добавлено через 1 минуту
barracuda1991, и условие в запрос добавь, а то он тебе все документы выберет.
1
barracuda1991
1 / 1 / 1
Регистрация: 30.07.2015
Сообщений: 115
Завершенные тесты: 1
01.06.2016, 13:24  [ТС] 3
Цитата Сообщение от SHIFT_969 Посмотреть сообщение
СтрокаТабЧасти.Номенклатура = НовыйТовар; // Что такое НовыйТовар?
НовыйТовар - это поле на форме обработки, из которого берем товар, на который нужно заменить товар в текущей строке (тип поля - "СправочникСсылка.Номенклатура").
А теперь пишет ошибку:
{Обработка.ЗаменаТовараВПриходныхНакладных.Форма.Форма.Форма(18)}: Поле объекта недоступно для записи (Номенклатура)
СтрокаТабЧасти.Номенклатура = НовыйТовар;

Добавлено через 2 часа 25 минут
0
SHIFT_969
Злой самаритянин
179 / 180 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
01.06.2016, 13:35 4
barracuda1991, тогда нужно писать Объект.НовыйТовар. Чтобы значение получить.
1
barracuda1991
1 / 1 / 1
Регистрация: 30.07.2015
Сообщений: 115
Завершенные тесты: 1
01.06.2016, 15:46  [ТС] 5
Цитата Сообщение от SHIFT_969 Посмотреть сообщение
нужно писать Объект.НовыйТовар. Чтобы значение получить.
а мне к объекту обращаться на сервере или на клиенте?
0
SHIFT_969
Злой самаритянин
179 / 180 / 94
Регистрация: 24.04.2014
Сообщений: 686
Завершенные тесты: 1
01.06.2016, 16:22 6
Лучший ответ Сообщение было отмечено barracuda1991 как решение

Решение

barracuda1991, в данном случае можно и на клиенте и на сервере. Разница заключается в том, что на клиенте ты не сможешь получить реквизит реквизита (На сервере можно плучить Объект.Контрагент.Наименование, а на клиенте только Объект.Контрагент)
1
01.06.2016, 16:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2016, 16:22

Связь Справочника и Табличных частей
Всем привет, мой первый пост на этом форуме. Вопрос состоит вот в чем. Мне надо чтобы значение...

Из 2-х табличных частей в 1-ну. Конвертация данных
Добрый день, Форумчане! Столкнулся с проблемой, не получается написать правила для выгрузки из 2...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.