Как добавить в ТЧ

1. _Enot_ 10 10.06.19 19:18 Сейчас в теме +0.5 $m
Подскажите как добавить в ТЧ нового документа Товары из документа основания, которых нет в ТЧ Нового документа?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. _Enot_ 10 10.06.19 19:23 Сейчас в теме
(1)То есть я заново хочу перебрать документ основания и добавить не достающие товары. Не пойму как написать условие, чтобы отсечь имеющуюся номенклатуру
7. spacecraft 10.06.19 21:37 Сейчас в теме
(1) как-то так:
Запрос = Новый Запрос;
Запрос.Текст = 
	"ВЫБРАТЬ
	|	ДокументТовары.Номенклатура КАК Номенклатура
	|ИЗ
	|	Документ.ИмяДокументаОснования.Товары КАК ДокументТовары
	|ГДЕ
	|	ДокументТовары.Ссылка = &Ссылка
	|	И НЕ ДокументТовары.Номенклатура В (&СписокНоменклатуры)";

Запрос.УстановитьПараметр("Ссылка", Объект.Основание);
Запрос.УстановитьПараметр("СписокНоменклатуры", Объект.Товары.ВыгрузитьКолонку("Номенклатура"));
РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
	Стр = Объект.Товары.Добавить();
	Стр.Номенклатура = Выборка.Номенклатура;
КонецЦикла;
Показать
10. Isa816 64 11.06.19 12:55 Сейчас в теме
(7) Такой запрос не поможет если скажем в ТЗ несколько строк с одинаковой номенклатурой, могут быть разные характеристики или серии, а может быть разное обеспечение. Все зависит от того что это за документ и как он менялся в процессе.
Если все очень просто и цены и количество нужно такие же как в документе основания то можно сделать вообще просто.
Док = ТекДокумент.ПолучитьОбъект();
Док.Заполнить(ТекДокумент.Основание);
Док.Записать(РежимЗаписиДокумента.Проведение);
Но такой код перезапишет все данные документа на данные основания

Если все таки что то менялось то простым запросом на отбор номенклатуры не обойдется.
1) Нужно сделать временную таблицу из текущей таблице товаров, свернуть её по по Ном, Хар, Серии, Складу, единице (тут все поля которые моли меняться) так же группировку строк надо добавить ЦЕНУ (по тому что она может быть разной! В сумму группировок поставить Количество
2) Выгрузить таблицу основания в аналогичную таблицу и аналогично свернуть.
3) Добавить эти две таблицы в запрос и сделать левое соединение из документа основания к текущему документу
4) наложить условие ЕСТЬ NULL На ТекущейДокумент.номенклатура (и основные поля)
А так же проверить количество.
Дальше полученный результат в цикле добавить в текущий документ с поиском по таб части (что бы допустим изменить количество)
11. spacecraft 11.06.19 13:10 Сейчас в теме
(10) зачем что-то придумывать к конкретному вопросу?
Есть четкий вопрос: "То есть я заново хочу перебрать документ основания и добавить не достающие товары. Не пойму как написать условие, чтобы отсечь имеющуюся номенклатуру".
Есть четкий ответ в (7).

И где была речь про ТЗ?
12. Isa816 64 11.06.19 14:54 Сейчас в теме
(11) Ну в том то и вопрос, если добавится хоть одно условие из того что я добавил, ваш запрос не будет работать.
3. aka Любитель XML 10.06.19 19:43 Сейчас в теме
Либо запросом, либо используй НайтиСтроки. А зачем добавлять, может заново просто документ заполнить на основании?
4. _Enot_ 10 10.06.19 19:56 Сейчас в теме
(3)У меня товара сначала отобран с расхождениями, а теперь мне нужно еще добавить туда тот товар где нет расхождения, плюс условие, чтобы отсечь товар который уже есть там
5. uno-c 235 10.06.19 21:01 Сейчас в теме
ВыгрузитьКолонку с имеющейся в новом доке номенклатурой в массив, перебрать все строки основания, каждую из номенклатур основания искать в массиве, если не нашел - значит она нужна.
6. _Enot_ 10 10.06.19 21:25 Сейчас в теме
8. uno-c 235 10.06.19 22:25 Сейчас в теме
(6) Смотрите 7. spacecraft, это то, что я имел в виду, даже лучше.
9. acanta 10.06.19 22:34 Сейчас в теме
Внешнее соединение двух таблиц?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот