Всем привет, УПП.
Суть такая: на основании документа А делаю другой Б. И мне надо при проведении Б сравнить ТЧ А и Б,и перезаписать А если там есть какие-то изменения.
Подскажите, что не так делаю? не записывает элементы в документ. Нет ошибок, но ничего и не меняется.
Это в процедуре ПередЗаписью() документа Б
Суть такая: на основании документа А делаю другой Б. И мне надо при проведении Б сравнить ТЧ А и Б,и перезаписать А если там есть какие-то изменения.
Подскажите, что не так делаю? не записывает элементы в документ. Нет ошибок, но ничего и не меняется.
Это в процедуре ПередЗаписью() документа Б
Прикрепленные файлы:
По теме из базы знаний
- Сказ о том, как в одной крупной компании документооборот внедряли, или проблемы типовых обменов между КА и ДО
- Заполнение лицевых счетов по зарплатному проекту для документа "Ведомость в банк" (ERP 2.4, 2.5, КА 2.4, 2.5, ЗУП 3.1)
- Доработка универсальной обработки загрузки данных из табличного документа (для возможности загрузки в документ "Перенос данных" (ЗУП 3.1))
- Групповая обработка справочников и документов через таблицу v 1.1
- Обработка для подготовки файла настройки дымовых тестов измененных объектов конфигурации
Найденные решения
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ОбновитьДокументОснование();
КонецПроцедуры
Процедура ОбновитьДокументОснование()
Текст =
"ВЫБРАТЬ
| ПТУТовары.Номенклатура КАК Номенклатура,
| ПТУТовары.Количество КАК Количество,
| ПТУТовары.Коэффициент КАК Коэффициент,
| ПТУТовары.фто_МаркаТехники КАК фто_МаркаТехники,
| ПТУТовары.фто_Ячейка КАК фто_Ячейка
|ПОМЕСТИТЬ втПТУТовары
|ИЗ
| &ПТУТовары КАК ПТУТовары
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Количество КАК Количество,
| Товары.Коэффициент КАК Коэффициент,
| Товары.МаркаТехники КАК МаркаТехники,
| Товары.Ячейка КАК Ячейка
|ПОМЕСТИТЬ втПоступлениеТовары
|ИЗ
| Документ.ПоступлениеЗапчастей.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &СсылкаПоступлениеЗапчастей
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| втПоступлениеТовары.НомерСтроки КАК НомерСтроки,
| втПоступлениеТовары.Номенклатура КАК Номенклатура,
| ЕСТЬNULL(втПТУТовары.Количество, втПоступлениеТовары.Количество) КАК Количество,
| ЕСТЬNULL(втПТУТовары.Коэффициент, втПоступлениеТовары.Коэффициент) КАК Коэффициент,
| ЕСТЬNULL(втПТУТовары.фто_МаркаТехники, втПоступлениеТовары.МаркаТехники) КАК МаркаТехники,
| ЕСТЬNULL(втПТУТовары.фто_Ячейка, втПоступлениеТовары.Ячейка) КАК Ячейка
|ИЗ
| втПоступлениеТовары КАК втПоступлениеТовары
| ЛЕВОЕ СОЕДИНЕНИЕ втПТУТовары КАК втПТУТовары
| ПО втПоступлениеТовары.Номенклатура = втПТУТовары.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| втПоступлениеТовары.НомерСтроки КАК НомерСтроки,
| втПоступлениеТовары.Номенклатура КАК Номенклатура
|ИЗ
| втПоступлениеТовары КАК втПоступлениеТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПТУТовары КАК втПТУТовары
| ПО втПоступлениеТовары.Номенклатура = втПТУТовары.Номенклатура
|ГДЕ
| (втПоступлениеТовары.Количество <> втПТУТовары.Количество
| ИЛИ втПоступлениеТовары.Коэффициент <> втПТУТовары.Коэффициент
| ИЛИ втПоступлениеТовары.МаркаТехники <> втПТУТовары.фто_МаркаТехники
| ИЛИ втПоступлениеТовары.Ячейка <> втПТУТовары.фто_Ячейка)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос = новый Запрос(Текст);
Запрос.УстановитьПараметр("СсылкаПоступлениеЗапчастей", бит_ДокументОснование);
Запрос.УстановитьПараметр("ПТУТовары", ЭтотОбъект.Товары.Выгрузить());
Пакет = Запрос.ВыполнитьПакет();
ТЧПоступления = Пакет[2].Выгрузить();
ИзмененныеСтроки = Пакет[3].Выгрузить();
Если ИзмененныеСтроки.Количество() > 0 Тогда
ПоступлениеЗапчастейОбъект = бит_ДокументОснование.ПолучитьОбъект();
ПоступлениеЗапчастейОбъект.Товары.Загрузить(ТЧПоступления);
ПоступлениеЗапчастейОбъект.Записать();
КонецЕсли;
КонецПроцедуры
Показатьнаверно. хз.
вопросы на засыпку:
- че делать при отмене проведения документа Б?
- че будет, если создать два документа Б на одну и туже номенклатуру с разными данными в строке, а затем второй отменить? либо провести еще раз первый?
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Если я верно понял, то вы хотите иметь одинаковую таб. часть в обоих документах.
Тогда не нужна таб. часть ни в одном из этих документов, а надо общие данные хранить где-то еще, например в регистре сведений. На форму же обоих документов выводится табл. значений, которая при создании формы заполняется данными РС, а изменения переносятся обратно в РС, согласно вашим бизнес-правилам.
На всякий случай - если вам нужно нечто экзотическое - типа "до проведения таб. части могут различаться", то это решается также.
А то, что вы пытаетесь сделать, по-моему, - серьезная архитектурная ошибка.
Суть такая: на основании документа А делаю другой Б. И мне надо при проведении Б сравнить ТЧ А и Б,и перезаписать А если там есть какие-то изменения.
Если я верно понял, то вы хотите иметь одинаковую таб. часть в обоих документах.
Тогда не нужна таб. часть ни в одном из этих документов, а надо общие данные хранить где-то еще, например в регистре сведений. На форму же обоих документов выводится табл. значений, которая при создании формы заполняется данными РС, а изменения переносятся обратно в РС, согласно вашим бизнес-правилам.
На всякий случай - если вам нужно нечто экзотическое - типа "до проведения таб. части могут различаться", то это решается также.
А то, что вы пытаетесь сделать, по-моему, - серьезная архитектурная ошибка.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ОбновитьДокументОснование();
КонецПроцедуры
Процедура ОбновитьДокументОснование()
Текст =
"ВЫБРАТЬ
| ПТУТовары.Номенклатура КАК Номенклатура,
| ПТУТовары.Количество КАК Количество,
| ПТУТовары.Коэффициент КАК Коэффициент,
| ПТУТовары.фто_МаркаТехники КАК фто_МаркаТехники,
| ПТУТовары.фто_Ячейка КАК фто_Ячейка
|ПОМЕСТИТЬ втПТУТовары
|ИЗ
| &ПТУТовары КАК ПТУТовары
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Количество КАК Количество,
| Товары.Коэффициент КАК Коэффициент,
| Товары.МаркаТехники КАК МаркаТехники,
| Товары.Ячейка КАК Ячейка
|ПОМЕСТИТЬ втПоступлениеТовары
|ИЗ
| Документ.ПоступлениеЗапчастей.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &СсылкаПоступлениеЗапчастей
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| втПоступлениеТовары.НомерСтроки КАК НомерСтроки,
| втПоступлениеТовары.Номенклатура КАК Номенклатура,
| ЕСТЬNULL(втПТУТовары.Количество, втПоступлениеТовары.Количество) КАК Количество,
| ЕСТЬNULL(втПТУТовары.Коэффициент, втПоступлениеТовары.Коэффициент) КАК Коэффициент,
| ЕСТЬNULL(втПТУТовары.фто_МаркаТехники, втПоступлениеТовары.МаркаТехники) КАК МаркаТехники,
| ЕСТЬNULL(втПТУТовары.фто_Ячейка, втПоступлениеТовары.Ячейка) КАК Ячейка
|ИЗ
| втПоступлениеТовары КАК втПоступлениеТовары
| ЛЕВОЕ СОЕДИНЕНИЕ втПТУТовары КАК втПТУТовары
| ПО втПоступлениеТовары.Номенклатура = втПТУТовары.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| втПоступлениеТовары.НомерСтроки КАК НомерСтроки,
| втПоступлениеТовары.Номенклатура КАК Номенклатура
|ИЗ
| втПоступлениеТовары КАК втПоступлениеТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПТУТовары КАК втПТУТовары
| ПО втПоступлениеТовары.Номенклатура = втПТУТовары.Номенклатура
|ГДЕ
| (втПоступлениеТовары.Количество <> втПТУТовары.Количество
| ИЛИ втПоступлениеТовары.Коэффициент <> втПТУТовары.Коэффициент
| ИЛИ втПоступлениеТовары.МаркаТехники <> втПТУТовары.фто_МаркаТехники
| ИЛИ втПоступлениеТовары.Ячейка <> втПТУТовары.фто_Ячейка)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос = новый Запрос(Текст);
Запрос.УстановитьПараметр("СсылкаПоступлениеЗапчастей", бит_ДокументОснование);
Запрос.УстановитьПараметр("ПТУТовары", ЭтотОбъект.Товары.Выгрузить());
Пакет = Запрос.ВыполнитьПакет();
ТЧПоступления = Пакет[2].Выгрузить();
ИзмененныеСтроки = Пакет[3].Выгрузить();
Если ИзмененныеСтроки.Количество() > 0 Тогда
ПоступлениеЗапчастейОбъект = бит_ДокументОснование.ПолучитьОбъект();
ПоступлениеЗапчастейОбъект.Товары.Загрузить(ТЧПоступления);
ПоступлениеЗапчастейОбъект.Записать();
КонецЕсли;
КонецПроцедуры
Показатьнаверно. хз.
вопросы на засыпку:
- че делать при отмене проведения документа Б?
- че будет, если создать два документа Б на одну и туже номенклатуру с разными данными в строке, а затем второй отменить? либо провести еще раз первый?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот