powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Поиск и удаление данных в 1С
1 сообщений из 1, страница 1 из 1
Поиск и удаление данных в 1С
    #36135093
vup70200
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изучаю 1С 8.1 4-й день. Столкнулся с такой проблемой: нужно в таблице(Документы) найти по (не знаю, даже по чему. В БД есть понятие ключа(ПК). тут я так понял, этим вариантом служит Ссылка? Или ошибаюсь). Так вот, код ниже выполняет поставленную задачу:
Код: plaintext
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 С не пойму, как организовать данный функционал...
Спасибо...
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Поиск и удаление данных в 1С
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]