Изучаю 1С 8.1 4-й день. Столкнулся с такой проблемой: нужно в таблице(Документы) найти по (не знаю, даже по чему. В БД есть понятие ключа(ПК). тут я так понял, этим вариантом служит Ссылка? Или ошибаюсь). Так вот, код ниже выполняет поставленную задачу:
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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ
|СчетНаОплатуПокупателю.Ссылка КАК СчетНаОплатуПокупателю,
|СчетИсходник.Номенклатура,
|СчетИсходник.Рубрика,
|СчетИсходник.Исходник,
|СчетИсходник.ЦенаИсходника,
|СчетИсходник.Количество
|ИЗ
|Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
|ЛЕВОЕ СОЕДИНЕНИЕ(
|ВЫБРАТЬ
|СчетИсходник.Заказ,
|СчетИсходник.Номенклатура,
|СчетИсходник.Рубрика,
|СчетИсходник.Ссылка КАК Исходник,
|СчетИсходник.ЦенаИсходника,
|СчетИсходник.Количество
|ИЗ
|Документ.СчетИсходник КАК СчетИсходник
|ГДЕ
|СчетИсходник.ПометкаУдаления = ЛОЖЬ) КАК СчетИсходник
|ПО
|СчетНаОплатуПокупателю.Заказ = СчетИсходник.Заказ
|ГДЕ
|СчетНаОплатуПокупателю.ПометкаУдаления = ЛОЖЬ
|И СчетНаОплатуПокупателю.Обработан = ЛОЖЬ
|И (СчетНаОплатуПокупателю.Заказ <> """" ИЛИ СчетНаОплатуПокупателю.Заказ ЕСТЬ NULL)
|ИТОГИ ПО
|СчетНаОплатуПокупателю";
Запрос.Текст = ТекстЗапроса;
РЗ = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого СчетПолучатель из РЗ.Строки Цикл
Исх = Документы.СчетИсходник.Выбрать(); Вот здесь я так понимаю я должен выбрать данные из таблицы
Док = СчетПолучатель.СчетНаОплатуПокупателю.ПолучитьОбъект();
Для Каждого СчетИсходник из СчетПолучатель.Строки Цикл
НовСтрока=Док.Услуги.Добавить();
НовСтрока.Номенклатура = СчетИсходник.Номенклатура;
НовСтрока.Рубрика = СчетИсходник.Рубрика;
НовСтрока.Исходник = СчетИсходник.Исходник;
НовСтрока.Цена = СчетИсходник.ЦенаИсходника;
НовСтрока.Количество = СчетИсходник.Количество;
НовСтрока.Сумма = СчетИсходник.ЦенаИсходника * СчетИсходник.Количество;
//НовСтрока.СтавкаНДС
//-Удаляем исходник
Исх.НайтиПоСсылке(СчетИсходник.Исходник); Вот здесь я должен как-то по какой-то ключевой информации найти запись по Запросу и удалить ее
КонецЦикла;
Попытка
Док.Записать(РежимЗаписиДокумента.Запись);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
т.е. заполняет табличную часть . Суть в чем.. есть две таблицы: СчетаНаОплатуПокупателю и СчетИсходник. Связь между ними по символьному полю Заказ. СчетИсходник по сути содержит табличную часть таблицы СчетНаОплатуПокупателю. В конфигурации реализован механиз выписки этих самых исходников по счетам НА КАЖДОГО КОНТРАГЕНТА(Есть отдельная таблица-справочник Исходники, каждый исходник привязан к Контрагенту). Но суть в том, что данные по исходникам поступают потоком, без сортировки по Контрагентам и очень неудобно руками каждый раз искать нужный счет для конкретного контрагента и заполнять его. Проще создать отдельную таблицу-Документ, где будет Исходник и Заказ (название заказа). Так же в Счетах добавляем реквизит Заказ. При выписке счета мы указываем контрагента и Заказ. т.е. абсолютно не гляда на исходники. Далее также ни на что не глядя заполняем Исходники, не забыв указать Заказ. И уже по завершении какого-то периода набора(день, неделя, неважно) жмем кнопку Сформировать и по Заказу код должен сформировать табличную часть счетов. Но, так как поле Заказ заполняется вручную, возможны опечятки. Т.е. в таблице СчетИсходник будут непривязанные к счетам записи. Чтобы их показать для дальнейшего разбора и исправления ситуации, по замыслу, нужно удалить привязанные строки, оставив только беспризорные. Я не могу понять, как и по какому уникальному реквизиту осуществить поиск ваыбранных данных из СчетИсходник и удалить их. Оставив при этом ТОЛЬКО не привязанные данные. В Делфи, допустим, есть методы поиска по ключу/составному ключу, тот же сиквел позволяет это сделать запросом вида select * from t1 where key not in (select key from t2) (или аналогичным запросом). В 1 С не пойму, как организовать данный функционал...
Спасибо...